Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
21 commits
Select commit Hold shift + click to select a range
2cb0c17
add Eloss for DDVCS
raffaelladevita Jun 16, 2025
3ccc130
update swimmer with energy loss
tongtongcao Jun 17, 2025
3d75246
override energyLossUpdate() in daughter classes
tongtongcao Jun 18, 2025
bf47759
let energy loss only apply into swimming to beam line after TB tracking
tongtongcao Jun 18, 2025
20e2ba4
cancel swimming from vertex to first layer of DC in TrackCandListFind…
tongtongcao Jun 18, 2025
26bf391
new branch for urwell ddvcs proposal
Jun 12, 2025
ea0419a
Change logger level from FINE to FINEST for DC codes at the event level
tongtongcao Jun 20, 2025
8e8ee1f
Merge branch 'iss698' into ddvcs
tongtongcao Jul 2, 2025
3d1f17e
Merge branch 'development' into ddvcs_urwell
Jul 3, 2025
601caf7
new FVT detector for ddvcs proposal; Improved strip geometry for URWe…
Jul 3, 2025
46e491e
fix a bug on URWellStrip in the recostruction part
Jul 3, 2025
d8c17aa
Merge branch 'development' into ddvcs
raffaelladevita Jul 4, 2025
4c94587
Merge branch 'ddvcs' into ddvcs_urwell
raffaelladevita Jul 4, 2025
4e6fc6a
fix issue on the urwell geometry
Jul 14, 2025
995883c
initializing the urwell service for ddvcs
raffaelladevita Jul 14, 2025
51b5269
added dc frame
raffaelladevita Jul 14, 2025
a89eb25
update FMT tracking to work on FVT
tongtongcao Jul 16, 2025
524b745
Merge pull request #749 from JeffersonLab/ddvcsTracking
raffaelladevita Jul 16, 2025
3eb4b89
updated FT reconstruction for ddvcs calorimeter, added 20 MeV thresho…
raffaelladevita Jul 16, 2025
c8058bd
implemented layer surface info for the FVT
Jul 17, 2025
27d7a2c
ddvcs fvt: implemented seeding based on crosses
raffaelladevita Aug 15, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,8 @@ public List<DGTZ> readADCs(DetectorType detector,DataBank bank) {
ADC adcData = new ADC(detector);
adcData.readFromBank(bank, i);

if(!adcData.isGood()) adcData.skip();
if(!adcData.isGood() ||
(detector==DetectorType.FTCAL && adcData.getAdc()<200)) adcData.skip();

adcStore.add(adcData);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -580,6 +580,7 @@ public final class DCGeant4Factory extends Geant4Factory {
private final HashMap<String, String> properties = new HashMap<>();
private int nsgwires;

private final double x_enlargement = 1.00;
private final double y_enlargement = 3.65;
private final double z_enlargement = -2.46;
private final double microgap = 0.01;
Expand Down Expand Up @@ -825,19 +826,20 @@ private Geant4Basic getRegion(int isec, int ireg) {
}

private Geant4Basic getLayer(int isec, int isuper, int ilayer) {
return getRegion(isec, isuper/2).getChildren().get((isuper%2)*6 + ilayer);
return getRegion(isec, isuper/2).getChildren().get(0).getChildren().get((isuper%2)*6 + ilayer);
}
///////////////////////////////////////////////////
public Geant4Basic createRegion(int isector, int iregion) {
Wire regw0 = new Wire(isector+1, iregion * 2, 0, 0);
Wire regw1 = new Wire(isector+1, iregion * 2 + 1, 7, nsgwires - 1);

double dx_shift = y_enlargement * Math.tan(Math.toRadians(29.5));

double dx_shift = y_enlargement * Math.tan(dbref.thopen(iregion)/2);
double extra = 0.2;

double reg_dz = (dbref.frontgap(iregion) + dbref.backgap(iregion) + dbref.midgap(iregion) + dbref.superwidth(iregion * 2) + dbref.superwidth(iregion * 2 + 1)) / 2.0 + z_enlargement;
double reg_dx0 = Math.abs(regw0.bottom().x) - dx_shift + 1.0;
double reg_dx1 = Math.abs(regw1.top().x) + dx_shift + 1.0;
double reg_dy = regw1.top().minus(regw0.bottom()).y / Math.cos(dbref.thtilt(iregion)) / 2.0 + y_enlargement + 1.0;
double reg_dx0 = Math.abs(regw0.bottom().x) - dx_shift + x_enlargement;
double reg_dx1 = Math.abs(regw1.top().x) + dx_shift + x_enlargement;
double reg_dy = regw1.top().minus(regw0.bottom()).y / Math.cos(dbref.thtilt(iregion)) / 2.0 + y_enlargement;
double reg_skew = 0.0;
double reg_thtilt = dbref.thtilt(iregion);

Expand All @@ -854,6 +856,17 @@ public Geant4Basic createRegion(int isector, int iregion) {
regionVolume.translate(vcenter.x, vcenter.y, vcenter.z);
regionVolume.setId(isector + 1, iregion + 1, 0, 0);

double gas_dx0 = reg_dx0 - x_enlargement + dx_shift + extra;
double gas_dx1 = reg_dx1 - x_enlargement - dx_shift + extra;
double gas_dy = reg_dy - y_enlargement + extra;
Geant4Basic regionGas = new G4Trap("regionGas" + (iregion + 1) + "_s" + (isector + 1),
reg_dz, -reg_thtilt, Math.toRadians(90.0),
gas_dy, gas_dx0, gas_dx1, 0.0,
gas_dy, gas_dx0, gas_dx1, 0.0);
regionGas.setPosition(0, 0, 0);
regionGas.setMother(regionVolume);
regionGas.setId(isector + 1, iregion + 1, 0, 0);

for (int isup = 0; isup < 2; isup++) {
int isuper = iregion * 2 + isup;
Geant4Basic superlayerVolume = this.createSuperlayer(isuper);
Expand All @@ -866,7 +879,7 @@ public Geant4Basic createRegion(int isector, int iregion) {
superlayerVolume.rotate("zxy", -dbref.thster(isuper), 0.0, 0.0);

superlayerVolume.setPosition(slshift.x, slshift.y, slshift.z);
superlayerVolume.setMother(regionVolume);
superlayerVolume.setMother(regionGas);
superlayerVolume.setId(isector + 1, iregion + 1, isuper + 1);

int nsglayers = dbref.nsenselayers(isuper) + dbref.nguardlayers(isuper);
Expand All @@ -881,7 +894,7 @@ public Geant4Basic createRegion(int isector, int iregion) {
layerVolume.rotate("zxy", -dbref.thster(isuper), 0.0, 0.0);

layerVolume.setPosition(lshift.x, lshift.y, lshift.z);
layerVolume.setMother(regionVolume);
layerVolume.setMother(regionGas);
layerVolume.setId(isector + 1, iregion + 1, isuper + 1, ilayer);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,23 +9,30 @@ public class URWellConstants {

private final static String CCDBPATH = "/geometry/urwell/";

public final static int NMAXREGIONS = 2; //max number of regions
public final static int NREGIONS = 1; //number of regions
public final static int NMAXREGIONS = 6; //max number of regions
public final static int NREGIONS = 6; //number of regions
public final static int NSECTORS = 6; //number of sectors
public final static int NLAYERS = 2; //number of layers
public final static int NCHAMBERS = 3; //number of chambers in a sector
public final static int NCHAMBERS_ddvcs = 1; //number of chambers in a sector

public final static double XENLARGEMENT = 0.5; // cm
public final static double YENLARGEMENT = 1.; // cm
public final static double XENLARGEMENT = 0.1; // cm
public final static double YENLARGEMENT = 0.1; // cm
public final static double ZENLARGEMENT = 0.1; // cm

// Sector geometrical parameters
public final static double THOPEN = 54.; // opening angle between endplate planes (deg)
public final static double THTILT = 25; // theta tilt (deg)
public final static double THMIN = 4.694; // polar angle to the base of first chamber (deg)
public final static double THMAX = 40;
public final static double SECTORHEIGHT = 146.21; //height of each sector (cm)
public final static double DX0CHAMBER0 = 5.197; // halfbase of chamber 1 (cm)

public final static double SECTORHEIGHT_ddvcs = 22;
public final static double THMIN_ddvcs = 6.8;
public final static double DX0CHAMBER0_ddvcs = 3.207;
public final static double THMAX_ddvcs = 35;

// Chamber volumes and materials (units are cm)
public final static double[] CHAMBERVOLUMESTHICKNESS = {0.0025, 0.0005,0.3, // window
0.0025, 0.0005,0.4, // cathode
Expand All @@ -43,19 +50,32 @@ public class URWellConstants {
"support_skin1_g10", "support_honeycomb_nomex", "support_skin2_g10"};

// URWELL position in the CLAS12 frame
public final static double TGT2DC0 = 228.078; // cm
public final static double TGT2DC0 = 228.078; // cm
// public final static double URWELL2DC0 = 2; // cm
public final static double URWELL2DC0[] = new double[NMAXREGIONS];
public final static double DIST2TGT[] = new double[NMAXREGIONS];
public final static double W2TGT[] = new double[NMAXREGIONS];;
public final static double YMIN[] = new double[NMAXREGIONS];
public final static double ZMIN[] = new double[NMAXREGIONS];
public final static double HSECTOR[] = new double[NMAXREGIONS];


public final static double TGT2DC0_ddvcs = 48.9; // cm
// public final static double URWELL2DC0 = 2; // cm
public final static double URWELL2DC0_ddvcs[] = new double[NMAXREGIONS];
public final static double DIST2TGT_ddvcs[] = new double[NMAXREGIONS];
public final static double W2TGT_ddvcs[] = new double[NMAXREGIONS];
;
public final static double YMIN_ddvcs[] = new double[NMAXREGIONS];
public final static double ZMIN_ddvcs[] = new double[NMAXREGIONS];
public final static double HSECTOR_ddvcs[] = new double[NMAXREGIONS];

// public final static double DIST2TGT = (TGT2DC0-URWELL2DC0);
// public final static double W2TGT = DIST2TGT/Math.cos(Math.toRadians(THTILT-THMIN));
// public final static double YMIN = W2TGT*Math.sin(Math.toRadians(THMIN)); // distance from the base chamber1 and beamline
// public final static double ZMIN = W2TGT*Math.cos(Math.toRadians(THMIN));
public final static double PITCH = 0.1 ; // cm
public final static double PITCH_ddvcs = 0.05 ; // cm
public final static double STEREOANGLE = 10; // deg


Expand Down Expand Up @@ -121,8 +141,21 @@ public static synchronized void load( DatabaseConstantProvider cp )
W2TGT[i] = DIST2TGT[i]/Math.cos(Math.toRadians(THTILT-THMIN));
YMIN[i]= W2TGT[i]*Math.sin(Math.toRadians(THMIN)); // distance from the base chamber1 and beamline
ZMIN[i] = W2TGT[i]*Math.cos(Math.toRadians(THMIN));


double h1 = DIST2TGT[i]*Math.tan((Math.toRadians(THMAX -THTILT )));
double h2 = DIST2TGT[i]*Math.tan((Math.toRadians(THTILT - THMIN)));
HSECTOR[i] = h1 +h2;


URWELL2DC0_ddvcs[i] = -2. + i * 2;
DIST2TGT_ddvcs[i] = (TGT2DC0_ddvcs + URWELL2DC0_ddvcs[i]);
W2TGT_ddvcs[i] = DIST2TGT_ddvcs[i] / Math.cos(Math.toRadians(THTILT - THMIN_ddvcs));
YMIN_ddvcs[i] = W2TGT_ddvcs[i] * Math.sin(Math.toRadians(THMIN_ddvcs)); // distance from the base chamber1 and beamline
ZMIN_ddvcs[i] = W2TGT_ddvcs[i] * Math.cos(Math.toRadians(THMIN_ddvcs));
double h1_ddvcs = DIST2TGT_ddvcs[i]*Math.tan((Math.toRadians(THMAX_ddvcs -THTILT )));
double h2_ddvcs = DIST2TGT_ddvcs[i]*Math.tan((Math.toRadians(THTILT - THMIN_ddvcs)));
HSECTOR_ddvcs[i] = h1_ddvcs +h2_ddvcs;

}


Expand Down
Loading
Loading