Skip to content
Open
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 @@ -18,6 +18,8 @@ public class DetectorHeader {
private float livetime = -1;
private short eventCategory = 0;
private short eventCategoryFT = 0;
private float torus = 0.0f;
private float solenoid = 0.0f;

public DetectorHeader() {
}
Expand Down Expand Up @@ -113,4 +115,10 @@ public void setLiveTime(float livetime) {
public void setEventCategory(short evcat) {
this.eventCategory = evcat;
}

public void setTorus(float t) { torus = t; }
public void setSolenoid(float s) {solenoid = s; }
public float getTorus() { return torus; }
public float getSolenoid() { return solenoid; }

}
37 changes: 20 additions & 17 deletions etc/services/rgl-clarode.yml
Original file line number Diff line number Diff line change
@@ -1,26 +1,11 @@
mime-types:
- binary/data-hipo
configuration:
global:
variation: rge_spring2024
timestamp: 10/08/2025-17:00:00
io-services:
writer:
schema_dir: full
services:
MAGFIELDS:
magfieldSolenoidMap: Symm_solenoid_r601_phi1_z1201_13June2018.dat
magfieldTorusMap: Full_torus_r251_phi181_z251_25Jan2021.dat
io-services:
reader:
class: org.jlab.io.clara.DecoderReader
name: DecoderReader
class: org.jlab.io.clara.Clas12Reader
name: Clas12Reader
writer:
class: org.jlab.io.clara.DecoderWriter
name: DecoderWriter
services:
- class: org.jlab.service.ai.DCDenoiseEngine
name: DCDN
- class: org.jlab.clas.swimtools.MagFieldsEngine
name: MAGFIELDS
- class: org.jlab.rec.ft.cal.FTCALEngine
Expand Down Expand Up @@ -57,3 +42,21 @@ services:
name: EBTB
- class: org.jlab.rec.rich.RICHEBEngine
name: RICH
- class: org.jlab.service.atof.ATOFEngine
name: ATOF
- class: org.jlab.service.ahdc.AHDCEngine
name: AHDC
configuration:
global:
variation: rge_spring2024
io-services:
writer:
schema_dir: dst
services:
MAGFIELDS:
magfieldSolenoidMap: Symm_solenoid_r601_phi1_z1201_13June2018.dat
magfieldTorusMap: Full_torus_r251_phi181_z251_25Jan2021.dat
AHDC:
Mode: "AI_Track_Finding"
mime-types:
- binary/data-hipo
22 changes: 22 additions & 0 deletions reconstruction/eb/src/main/java/org/jlab/rec/eb/EBUtil.java
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,28 @@ public static boolean isSimpleElectron(DetectorParticle p,EBCCDBConstants ccdb)

return true;
}

/**
* Perform a basic true/false identification for electrons.
*/
public static boolean isZeroFieldElectron(DetectorParticle p,EBCCDBConstants ccdb) {

// require ECAL:
final int sector = p.getSector(DetectorType.ECAL);
if (sector<1) return false;

// requre HTCC photoelectrons:
final double nphe = p.getNphe(DetectorType.HTCC);
if (nphe < ccdb.getDouble(EBCCDBEnum.HTCC_NPHE_CUT)) return false;

// require PCAL minimum energy:
final double minPcalEnergy = ccdb.getSectorDouble(EBCCDBEnum.ELEC_PCAL_min_energy,sector);
final double pcalEnergy = p.getEnergy(DetectorType.ECAL,DetectorLayer.PCAL);
if (pcalEnergy < minPcalEnergy) return false;

// require PCAL+ECAL minimum energy 500 MeV:
return p.getEnergy(DetectorType.ECAL) > 0.5;
}

/**
* Calculate timing resolution from EventBuilder constants:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -350,7 +350,7 @@ public void assignBetas(DetectorEvent event,final boolean useStartTimeFromFT){
}
public void assignPids(DetectorEvent event,final boolean useStartTimeFromFT) {

PIDHypothesis pidHyp = new PIDHypothesis();
PIDHypothesis pidHyp = new PIDHypothesis(event.getEventHeader().getTorus());
pidHyp.setEvent(event);
pidHyp.setUseStartTimeFromFT(useStartTimeFromFT);

Expand Down Expand Up @@ -382,12 +382,13 @@ else if (p.getCharge()<0) {

public class PIDHypothesis {

private float torus = 0;
private int theoryPID = -1;
private double PIDquality = 0.0;
private DetectorEvent event;
private boolean useStartTimeFromFT = false;

public PIDHypothesis() {}
public PIDHypothesis(float t) {torus=t;}

public void setEvent(DetectorEvent e) {event = e;}

Expand All @@ -405,7 +406,9 @@ public void PIDMatch(DetectorParticle p, int pid) {

final boolean pidFromTimingCheck = pid==pidFromTiming && p.getTheoryBeta(pid)>0;

final boolean isElectron = EBUtil.isSimpleElectron(p,ccdb);
final boolean isElectron = Math.abs(torus)>1e-8 ?
EBUtil.isSimpleElectron(p,ccdb) :
EBUtil.isZeroFieldElectron(p, ccdb);

final boolean htccSignalCheck = p.getNphe(DetectorType.HTCC)>ccdb.getDouble(EBCCDBEnum.HTCC_NPHE_CUT);
final boolean ltccSignalCheck = p.getNphe(DetectorType.LTCC)>ccdb.getDouble(EBCCDBEnum.LTCC_NPHE_CUT);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package org.jlab.service.eb;

import java.util.Collections;
import java.util.List;
import java.util.logging.Logger;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@ public static DetectorHeader readHeader(DataEvent event, EBScalers ebs, EBCCDBCo
dHeader.setRun(bank.getInt("run", 0));
dHeader.setEvent(bank.getInt("event", 0));
dHeader.setTrigger(bank.getLong("trigger", 0));
dHeader.setTorus(bank.getFloat("torus", 0));
dHeader.setSolenoid(bank.getFloat("solenoid", 0));
}

// helicity:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -467,22 +467,27 @@ public void setCharge(int ch) {
this.charge = ch;
}

public int getSoftwareTriggerScore(DetectorParticle p,EBCCDBConstants ccdb) {
public int getSoftwareTriggerScore(DetectorParticle p,EBCCDBConstants ccdb,float torus) {

int score = 0;

final double npheCut = ccdb.getDouble(EBCCDBEnum.HTCC_NPHE_CUT);
if(p.getNphe(DetectorType.HTCC) > npheCut){
score += 10;
}

final int sector = p.getSector(DetectorType.ECAL);
if (sector > 0) {
final double nSigmaCut = ccdb.getSectorDouble(EBCCDBEnum.ELEC_SF_nsigma,sector);
final double sfNSigma = SamplingFractions.getNSigma(11,p,ccdb);
final double nsigma = SamplingFractions.getNSigma(11,p,ccdb);
final double minPcalEnergy = ccdb.getSectorDouble(EBCCDBEnum.ELEC_PCAL_min_energy,sector);
if(abs(sfNSigma) < nSigmaCut &&
p.getEnergy(DetectorType.ECAL,1) > minPcalEnergy) {
if (Math.abs(torus) <1e-8) {
if (p.getEnergy(DetectorType.ECAL,1) > minPcalEnergy &&
p.getEnergy(DetectorType.ECAL) > 0.5) {
score += 100;
}
}
else if (abs(nsigma) < nSigmaCut && p.getEnergy(DetectorType.ECAL,1) > minPcalEnergy) {
score += 100;
}
}
Expand All @@ -503,7 +508,7 @@ public boolean assignSoftwareTrigger(DetectorEvent event,EBCCDBConstants ccdb) {
int maxScore = 0;
for (int i=0; i<npart; i++) {
DetectorParticle p = event.getParticle(i);
final int score = getSoftwareTriggerScore(p,ccdb);
final int score = getSoftwareTriggerScore(p,ccdb,event.getEventHeader().getTorus());
if(score >= this.score_requirement) {
if (this.charge==p.getCharge()) {
p.setPid(this.id);
Expand Down