Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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 @@ -119,8 +119,12 @@ public class DataTriggerSim2019Driver extends Driver {
// Define trigger simulation modules.
private boolean[] pairTriggerEnabled = new boolean[4];
private boolean[] singlesTriggerEnabled = new boolean[4];
//2021 update
private boolean[] singlesXYMinMaxEnabled = new boolean[4];
private boolean[] singlesMollerModeEnabled = new boolean[4];

private boolean[][] pairCutsEnabled = new boolean[4][12];
private boolean[][] singlesCutsEnabled = new boolean[4][9];
private boolean[][] singlesCutsEnabled = new boolean[4][12];
private TriggerModule2019[] singlesTrigger = new TriggerModule2019[4];
private TriggerModule2019[] pairsTrigger = new TriggerModule2019[4];

Expand All @@ -135,6 +139,10 @@ public class DataTriggerSim2019Driver extends Driver {
private static final int L2_MATCHING = 3;
private static final int L1L2_GEO_MATCHING = 4;
private static final int HODOECAL_GEO_MATCHING = 5;
//2021 update
private static final int X_MAX = 6;
private static final int Y_MIN = 7;
private static final int Y_MAX = 8;

private static final int TIME_COINCIDENCE = 0;
private static final int ENERGY_SUM = 1;
Expand Down Expand Up @@ -254,6 +262,10 @@ public void actionPerformed(ActionEvent e) {
// Set the trigger enabled status.
singlesTriggerEnabled[i] = singles[i].isEnabled();
pairTriggerEnabled[i] = pairs[i].isEnabled();

//2021 update
singlesXYMinMaxEnabled[i] = singles[i].isSinglesXYMinMaxEnabled();
singlesMollerModeEnabled[i] = singles[i].isSinglesMollerModeEnabled();

// Set the singles cut statuses.
singlesCutsEnabled[i][ENERGY_MIN] = singles[i].getEnergyMinCutConfig().isEnabled();
Expand All @@ -267,6 +279,10 @@ public void actionPerformed(ActionEvent e) {
singlesCutsEnabled[i][3 + L1L2_GEO_MATCHING] = singles[i].getL1L2GeoMatchingConfig().isEnabled();
singlesCutsEnabled[i][3 + HODOECAL_GEO_MATCHING] = singles[i].getHodoEcalGeoMatchingConfig()
.isEnabled();
//2021 update
singlesCutsEnabled[i][3 + X_MAX] = singles[i].getXMaxCutConfig().isEnabled();
singlesCutsEnabled[i][3 + Y_MIN] = singles[i].getYMinCutConfig().isEnabled();
singlesCutsEnabled[i][3 + Y_MAX] = singles[i].getYMaxCutConfig().isEnabled();

// Set the pair cut statuses.
pairCutsEnabled[i][ENERGY_MIN] = pairs[i].getEnergyMinCutConfig().isEnabled();
Expand All @@ -283,10 +299,12 @@ public void actionPerformed(ActionEvent e) {
pairCutsEnabled[3][3 + PAIR_L1_MATCHING] = pairs[3].getL1MatchingConfig().isEnabled();
pairCutsEnabled[3][3 + PAIR_L2_MATCHING] = pairs[3].getL2MatchingConfig().isEnabled();
pairCutsEnabled[3][3 + PAIR_L1L2_GEO_MATCHING] = pairs[3].getL1L2GeoMatchingConfig().isEnabled();
pairCutsEnabled[3][3 + PAIR_HODOECAL_GEO_MATCHING] = pairs[3].getHodoEcalGeoMatchingConfig().isEnabled();
pairCutsEnabled[3][3 + PAIR_HODOECAL_GEO_MATCHING] = pairs[3].getHodoEcalGeoMatchingConfig().isEnabled();

// In evio, -31 for cluster xmin is written as 33 during DAQ since variable is not set as unsigned
if((int)singlesTrigger[0].getCutValue(TriggerModule2019.CLUSTER_XMIN) == 33) singlesTrigger[0].setCutValue(TriggerModule2019.CLUSTER_XMIN, -31);


}
});
}
Expand Down Expand Up @@ -568,6 +586,10 @@ private <E> SimTriggerModule2019<E> constructTriggers(List<E> clusters, Class<E>
boolean passHodoL2Matching = false;
boolean passHodoL1L2Matching = false;
boolean passHodoEcalMatching = false;
//2021 update
boolean passClusterXMax = true;
boolean passClusterYMin = true;
boolean passClusterYMax = true;

List<CalorimeterHit> hodoHitList = new ArrayList<CalorimeterHit>();
Map<Integer, HodoscopePattern> patternMap = new HashMap<Integer, HodoscopePattern>();
Expand All @@ -587,7 +609,18 @@ private <E> SimTriggerModule2019<E> constructTriggers(List<E> clusters, Class<E>
passClusterHigh = singlesTrigger[triggerNum].clusterTotalEnergyCutHigh(c);
passHitCount = singlesTrigger[triggerNum].clusterHitCountCut(c);
passClusterXMin = singlesTrigger[triggerNum].clusterXMinCut(c);
passClusterPDE = singlesTrigger[triggerNum].clusterPDECut(c);
//2021 update
if(singlesMollerModeEnabled[triggerNum])
passClusterPDE = singlesTrigger[triggerNum].clusterMollerPDECut(c);
else
passClusterPDE = singlesTrigger[triggerNum].clusterPDECut(c);

//2021 update
if(singlesXYMinMaxEnabled[1]) {
passClusterXMax = singlesTrigger[triggerNum].clusterXMaxCut(c);
passClusterYMin = singlesTrigger[triggerNum].clusterYMinCut(c);
passClusterYMax = singlesTrigger[triggerNum].clusterYMaxCut(c);
}

if (topnbot == 1) {
// Save valid hodoscope hits into a list
Expand Down Expand Up @@ -665,7 +698,18 @@ else if (cluster instanceof VTPCluster) {
passClusterHigh = singlesTrigger[triggerNum].clusterTotalEnergyCutHigh(c);
passHitCount = singlesTrigger[triggerNum].clusterHitCountCut(c);
passClusterXMin = singlesTrigger[triggerNum].clusterXMinCut(c);
passClusterPDE = singlesTrigger[triggerNum].clusterPDECut(c);
//2021 update
if(singlesMollerModeEnabled[triggerNum])
passClusterPDE = singlesTrigger[triggerNum].clusterMollerPDECut(c);
else
passClusterPDE = singlesTrigger[triggerNum].clusterPDECut(c);

//2021 update
if(singlesXYMinMaxEnabled[1]) {
passClusterXMax = singlesTrigger[triggerNum].clusterXMaxCut(c);
passClusterYMin = singlesTrigger[triggerNum].clusterYMinCut(c);
passClusterYMax = singlesTrigger[triggerNum].clusterYMaxCut(c);
}

if (topnbot == 1) {
// Save valid hodoscope hits into a list
Expand Down Expand Up @@ -744,6 +788,11 @@ else if (cluster instanceof VTPCluster) {
trigger.setStateHodoL2Matching(passHodoL2Matching);
trigger.setStateHodoL1L2Matching(passHodoL1L2Matching);
trigger.setStateHodoEcalMatching(passHodoEcalMatching);

//2021 update
trigger.setStateClusterXMax(passClusterXMax);
trigger.setStateClusterYMin(passClusterYMin);
trigger.setStateClusterYMax(passClusterYMax);

if (verbose) {
System.out.printf("\t N >= %1.0f :: [ %5b ]%n",
Expand All @@ -762,6 +811,12 @@ else if (cluster instanceof VTPCluster) {
System.out.printf("\t HodoL2Matching :: [ %5b ]%n", passHodoL2Matching);
System.out.printf("\t HodoL1L2Matching :: [ %5b ]%n", passHodoL1L2Matching);
System.out.printf("\t HodoEcalMatching :: [ %5b ]%n", passHodoEcalMatching);
System.out.printf("\t%-5.0f <= X :: [ %5b ]%n",
singlesTrigger[triggerNum].getCutValue(TriggerModule2019.CLUSTER_XMAX), passClusterXMax);
System.out.printf("\t%-5.0f <= X :: [ %5b ]%n",
singlesTrigger[triggerNum].getCutValue(TriggerModule2019.CLUSTER_YMIN), passClusterYMin);
System.out.printf("\t%-5.0f <= X :: [ %5b ]%n",
singlesTrigger[triggerNum].getCutValue(TriggerModule2019.CLUSTER_YMAX), passClusterYMax);
}

// A trigger will only be reported by the VTP if it
Expand Down Expand Up @@ -794,6 +849,17 @@ else if (cluster instanceof VTPCluster) {
if (singlesCutsEnabled[triggerNum][3 + HODOECAL_GEO_MATCHING] && !trigger.getStateHodoEcalMatching()) {
continue triggerLoop;
}

//2021 update
if (singlesCutsEnabled[triggerNum][3 + X_MAX] && !trigger.getStateClusterXMax()) {
continue triggerLoop;
}
if (singlesCutsEnabled[triggerNum][3 + Y_MIN] && !trigger.getStateClusterYMin()) {
continue triggerLoop;
}
if (singlesCutsEnabled[triggerNum][3 + Y_MAX] && !trigger.getStateClusterYMax()) {
continue triggerLoop;
}

// Store the trigger.
if(singlesTriggerEnabled[triggerNum] == true) singlesTriggers.get(triggerNum).add(trigger);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1475,25 +1475,40 @@ private int compareSimulatedToHardwareSingles(Collection<Trigger<?>> simTriggers
continue hardwareLoop;
}

if (hardwareSinglesTrigger.passHodo1() != simSinglesTrigger.getStateHodoL1Matching()) {
if (!singlesTrigger[triggerType.getTriggerNum()].getCutEn(TriggerModule2019.SINGLES_MOLLERMODE_EN) && hardwareSinglesTrigger.passHodo1() != simSinglesTrigger.getStateHodoL1Matching()) {
logger.printf(" [ fail; Hodo L1 ]%n");
continue hardwareLoop;
}

if (hardwareSinglesTrigger.passHodo2() != simSinglesTrigger.getStateHodoL2Matching()) {
if (!singlesTrigger[triggerType.getTriggerNum()].getCutEn(TriggerModule2019.SINGLES_MOLLERMODE_EN) && hardwareSinglesTrigger.passHodo2() != simSinglesTrigger.getStateHodoL2Matching()) {
logger.printf(" [ fail; Hodo L2 ]%n");
continue hardwareLoop;
}

if (hardwareSinglesTrigger.passHodoGeo() != simSinglesTrigger.getStateHodoL1L2Matching()) {
if (!singlesTrigger[triggerType.getTriggerNum()].getCutEn(TriggerModule2019.SINGLES_MOLLERMODE_EN) && hardwareSinglesTrigger.passHodoGeo() != simSinglesTrigger.getStateHodoL1L2Matching()) {
logger.printf(" [ fail; Hodo L1L2 ]%n");
continue hardwareLoop;
}

if (hardwareSinglesTrigger.passHodoECal() != simSinglesTrigger.getStateHodoEcalMatching()) {
if (!singlesTrigger[triggerType.getTriggerNum()].getCutEn(TriggerModule2019.SINGLES_MOLLERMODE_EN) && hardwareSinglesTrigger.passHodoECal() != simSinglesTrigger.getStateHodoEcalMatching()) {
logger.printf(" [ fail; Hodo Ecal ]%n");
continue hardwareLoop;
}

//2021 update
if (hardwareSinglesTrigger.passXMax() != simSinglesTrigger.getStateClusterXMax()) {
logger.printf(" [ fail; x max ]%n");
continue hardwareLoop;
}
if (hardwareSinglesTrigger.passYMin() != simSinglesTrigger.getStateClusterYMin()) {
logger.printf(" [ fail; y min ]%n");
continue hardwareLoop;
}
if (hardwareSinglesTrigger.passYMax() != simSinglesTrigger.getStateClusterYMax()) {
logger.printf(" [ fail; y max ]%n");
continue hardwareLoop;
}


} else {
throw new IllegalArgumentException("Trigger type is unrecongnized or simulated and "
Expand Down Expand Up @@ -1555,28 +1570,34 @@ && getTriggerTime(simTrigger) <= triggerWindowEnd) {
System.out.println("software trigger: ");
System.out.println("\ttime" + getTriggerTime(simTrigger));
System.out.println(
"\tstate of Emin, state of Emax, state of hit count, state of xmin, state of PED, state of Hodo L1, state of Hodo L2, state of Hodo L1L2, state of Hodo Ecal: "
"\tstate of Emin, state of Emax, state of hit count, state of xmin, state of PED, state of Hodo L1, state of Hodo L2, state of Hodo L1L2, state of Hodo Ecal, state of xmax, state of ymin, state of ymax: "
+ simSinglesTrigger.getStateClusterEnergyLow() + ", "
+ simSinglesTrigger.getStateClusterEnergyHigh() + ", "
+ simSinglesTrigger.getStateHitCount() + ", " + simSinglesTrigger.getStateClusterXMin()
+ ", " + simSinglesTrigger.getStateClusterPDE() + ", "
+ simSinglesTrigger.getStateHodoL1Matching() + ", "
+ simSinglesTrigger.getStateHodoL2Matching() + ", "
+ simSinglesTrigger.getStateHodoL1L2Matching() + ", "
+ simSinglesTrigger.getStateHodoEcalMatching());
+ simSinglesTrigger.getStateHodoEcalMatching() + ", "
+ simSinglesTrigger.getStateClusterXMax() + ", "
+ simSinglesTrigger.getStateClusterYMin() + ", "
+ simSinglesTrigger.getStateClusterYMax());

System.out.println("hardware triggers: ");
for (VTPSinglesTrigger hardwareTrigger : hardwareTriggers) {
VTPSinglesTrigger hardwareSinglesTrigger = (VTPSinglesTrigger) hardwareTrigger;
System.out.println("\ttime" + hardwareSinglesTrigger.getTime());
System.out.println(
"\tstate of Emin, state of Emax, state of hit count, state of xmin, state of PED, state of Hodo L1, state of Hodo L2, state of Hodo L1L2, state of Hodo Ecal: "
"\tstate of Emin, state of Emax, state of hit count, state of xmin, state of PED, state of Hodo L1, state of Hodo L2, state of Hodo L1L2, state of Hodo Ecal, state of xmax, state of ymin, state of ymax: "
+ hardwareSinglesTrigger.passEMin() + ", " + hardwareSinglesTrigger.passEMax()
+ ", " + hardwareSinglesTrigger.passNMin() + ", "
+ hardwareSinglesTrigger.passXMin() + ", " + hardwareSinglesTrigger.passPDET()
+ ", " + hardwareSinglesTrigger.passHodo1() + ", "
+ hardwareSinglesTrigger.passHodo2() + ", " + hardwareSinglesTrigger.passHodoGeo()
+ ", " + hardwareSinglesTrigger.passHodoECal());
+ ", " + hardwareSinglesTrigger.passHodoECal() + ", "
+ hardwareSinglesTrigger.passXMax() + ", "
+ hardwareSinglesTrigger.passYMin() + ", "
+ hardwareSinglesTrigger.passYMax());
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,11 @@ public class SinglesTrigger2019<E> extends Trigger<E> {
private static final String HODO_L2_MATCHING = "hodoL2Matching";
private static final String HODO_L1L2_MATCHING = "hodoL1L2Matching";
private static final String HODO_ECAL_MATCHING = "hodoEcalMatching";

//2021 update
private static final String CLUSTER_XMAX = TriggerModule2019.CLUSTER_XMAX;
private static final String CLUSTER_YMIN = TriggerModule2019.CLUSTER_YMIN;
private static final String CLUSTER_YMAX = TriggerModule2019.CLUSTER_YMAX;

// Source of hodoscope
private List<CalorimeterHit> hodoHitList;
Expand Down Expand Up @@ -67,6 +72,11 @@ public SinglesTrigger2019(E source, List<CalorimeterHit> hodoHitList, Map<Intege
addValidCut(HODO_L2_MATCHING);
addValidCut(HODO_L1L2_MATCHING);
addValidCut(HODO_ECAL_MATCHING);

//2021 update
addValidCut(CLUSTER_XMAX);
addValidCut(CLUSTER_YMIN);
addValidCut(CLUSTER_YMAX);
}

/**
Expand Down Expand Up @@ -298,6 +308,68 @@ public boolean getStateHodoEcalMatching() {
public void setStateHodoEcalMatching(boolean state) {
setCutState(HODO_ECAL_MATCHING, state);
}

//2021 update
/**
* Gets whether cluster xmax was met.
*
* @return Returns <code>true</code> if the cut was met and <code>false</code>
* otherwise.
*/
public boolean getStateClusterXMax() {
return getCutState(CLUSTER_XMAX);
}

/**
* Sets whether the condition for cluster xmax was met.
*
* @param state - <code>true</code> indicates that the cut conditions were met
* and <code>false</code> that they were not.
*/
public void setStateClusterXMax(boolean state) {
setCutState(CLUSTER_XMAX, state);
}


/**
* Gets whether cluster ymin was met.
*
* @return Returns <code>true</code> if the cut was met and <code>false</code>
* otherwise.
*/
public boolean getStateClusterYMin() {
return getCutState(CLUSTER_YMIN);
}

/**
* Sets whether the condition for cluster ymin was met.
*
* @param state - <code>true</code> indicates that the cut conditions were met
* and <code>false</code> that they were not.
*/
public void setStateClusterYMin(boolean state) {
setCutState(CLUSTER_YMIN, state);
}

/**
* Gets whether cluster ymax was met.
*
* @return Returns <code>true</code> if the cut was met and <code>false</code>
* otherwise.
*/
public boolean getStateClusterYMax() {
return getCutState(CLUSTER_YMAX);
}

/**
* Sets whether the condition for cluster ymax was met.
*
* @param state - <code>true</code> indicates that the cut conditions were met
* and <code>false</code> that they were not.
*/
public void setStateClusterYMax(boolean state) {
setCutState(CLUSTER_YMAX, state);
}

@Override
public String toString() {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
samplingFraction: 1.0
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
samplingFraction: 1.0
Loading