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
151 changes: 129 additions & 22 deletions recon/src/main/java/org/hps/recon/skims/FEESkimmer.java
Original file line number Diff line number Diff line change
@@ -1,39 +1,146 @@
package org.hps.recon.skims;

import java.util.Set;
import java.util.Set;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

import org.lcsim.event.EventHeader;
import org.hps.record.triggerbank.AbstractIntData;
import org.hps.record.triggerbank.TSData2019;

import org.lcsim.event.EventHeader;
import org.lcsim.event.GenericObject;

/**
* Skimmer for full-energy-electron (FEE) events.
*
* The selection is applied in steps; the first (and, for now, only) step is the
* trigger skim, which requires that the event was taken with an FEE trigger.
* The trigger bits are read from the 2019+ TS bank, so this is applicable to the
* 2019 and 2021 running periods.
*/
public class FEESkimmer extends Skimmer {
private String _FEECandidateCollectionName = "UnconstrainedFEECandidates";
private double _clusterTimingCut = 20.0; // only used if _tight is true
private double _v0Chi2Cut = 100.0;
private double _trackChi2Cut = 80.0;
private double _trackDtCut = 20.0;
private double _trackPMax = 0.9;
private double _v0PMax = 1.4;
private int _nHitsMin=10;
//default parameters...ok for 2021 run
private String _tsBankCollectionName = "TSBank";
private boolean _requireFEETrigger = true;
private boolean _useFEETopTrigger = true;
private boolean _useFEEBotTrigger = true;
private boolean _debug = false;
private int totalFEETopTriggers = 0;
private int totalFEEBotTriggers = 0;

@Override
public boolean passSelection(EventHeader event){
// System.out.println(this.getClass().getName()+":: in pass selection");
boolean pass=true;


return pass;
if(_debug)
System.out.println(this.getClass().getName()+":: in pass selection");
incrementEventProcessed();

//step 1: trigger skim
if(!passTriggerSelection(event))
return false;

incrementEventPassed();
return true;
}

/**
* Require an FEE trigger bit in the TS bank. If neither the top nor the
* bottom FEE trigger is requested, or if the trigger requirement is turned
* off altogether, every event passes this step.
*/
private boolean passTriggerSelection(EventHeader event){
if(!_requireFEETrigger)
return true;

if (!event.hasCollection(GenericObject.class, _tsBankCollectionName)) {
if(_debug)System.out.println(this.getClass().getName()+":: no "+_tsBankCollectionName+" collection in event");
return false;
}

boolean pass=false;
for (GenericObject tsBank : event.get(GenericObject.class, _tsBankCollectionName)) {
if (AbstractIntData.getTag(tsBank) != TSData2019.BANK_TAG)
continue;
TSData2019 triggerData = new TSData2019(tsBank);
if (_useFEETopTrigger && triggerData.isFEETopTrigger()) {
totalFEETopTriggers++;
pass=true;
}
if (_useFEEBotTrigger && triggerData.isFEEBotTrigger()) {
totalFEEBotTriggers++;
pass=true;
}
}

if(_debug && !pass)
System.out.println(this.getClass().getName()+":: failed FEE trigger");

return pass;
}

public FEESkimmer(String file) {
super(file, null);
}
public FEESkimmer(String file, Set<String> ignore) {
super(file, ignore);
}

@Override
public void setParameters(String parsFileName){
String infilePreResDir = "/org/hps/recon/skims/";
String infile=infilePreResDir+parsFileName;
InputStream inParamStream = this.getClass().getResourceAsStream(infile);
System.out.println(this.getClass().getName()+":: reading in FEE skimming cuts from "+infile);
BufferedReader reader = new BufferedReader(new InputStreamReader(inParamStream));
String line;
String delims = "[ ]+";// this will split strings between one or more spaces
try {
while ((line = reader.readLine()) != null) {
String[] tokens = line.split(delims);
String parName=tokens[0].replaceAll("\\s+","");
System.out.println(this.getClass().getName()+":: parameter name = " + parName + "; value = " + tokens[1]);
putParam(parName,tokens[1]);

}
} catch (IOException ex) {
System.out.println(this.getClass().getName()+":: died while reading parameters");
return;
}
return;
}


public FEESkimmer(String file) {
super(file, null);
// this(super.addFileExtension(file), null);
private void putParam(String parName, String var){
if(parName.equals("tsBankCollectionName"))
_tsBankCollectionName=var;
else if(parName.equals("requireFEETrigger"))
_requireFEETrigger=Boolean.parseBoolean(var);
else if(parName.equals("useFEETopTrigger"))
_useFEETopTrigger=Boolean.parseBoolean(var);
else if(parName.equals("useFEEBotTrigger"))
_useFEEBotTrigger=Boolean.parseBoolean(var);
else
System.out.println(this.getClass().getName()+":: couldn't find "+parName+"!");
}
public FEESkimmer(String file, Set<String> ignore) {
super(file, ignore);

public int getTotalFEETopTriggers(){
return totalFEETopTriggers;
}

public int getTotalFEEBotTriggers(){
return totalFEEBotTriggers;
}

public void setRequireFEETrigger(boolean require){
this._requireFEETrigger=require;
}
public void setUseFEETopTrigger(boolean use){
this._useFEETopTrigger=use;
}
public void setUseFEEBotTrigger(boolean use){
this._useFEEBotTrigger=use;
}
public void setTsBankCollectionName(String name){
this._tsBankCollectionName=name;
}
}
28 changes: 18 additions & 10 deletions recon/src/main/java/org/hps/recon/skims/MultiSkimDriver.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,17 +31,17 @@ public class MultiSkimDriver extends Driver {

private String v0OutputFile="v0Skim";
private String threeBodyOutputFile="threeBodySkim";
private String FEEOutputFile="FEESkim";
private String feeOutputFile="FEESkim";
private String mollerOutputFile="mollerSkim";

private String v0ParamFile="default";
private String threeBodyParamFile="default";
private String FEEParamFile="default";
private String feeParamFile="default";
private String mollerParamFile="default";

private Skimmer v0Skimmer;
private Skimmer threeBodySkimmer;
private Skimmer FEESkimmer;
private Skimmer feeSkimmer;
private Skimmer mollerSkimmer;

protected Double beamEnergy;
Expand All @@ -62,6 +62,14 @@ public void endOfData() {
System.out.println("Total number of V0s passing skim = "+((V0Skimmer)v0Skimmer).getTotalV0sPassing());
}

if(skimFEE){
System.out.println("FEE skim events processed = " + feeSkimmer.getNProcessed());
System.out.println("Events passed = " + feeSkimmer.getNPassed());
System.out.println(" Pass efficiency = " + feeSkimmer.getPassFraction());
System.out.println("Total number of FEE top triggers = "+((FEESkimmer)feeSkimmer).getTotalFEETopTriggers());
System.out.println("Total number of FEE bottom triggers = "+((FEESkimmer)feeSkimmer).getTotalFEEBotTriggers());
}

if(skimMoller){
System.out.println("Moller skim events processed = " + mollerSkimmer.getNProcessed());
System.out.println("Events passed = " + mollerSkimmer.getNPassed());
Expand All @@ -85,8 +93,8 @@ protected void process(EventHeader event) {
writeSkimList.add(threeBodySkimmer);

if(skimFEE &&
FEESkimmer.passSelection(event))
writeSkimList.add(FEESkimmer);
feeSkimmer.passSelection(event))
writeSkimList.add(feeSkimmer);
if(skimMoller &&
mollerSkimmer.passSelection(event))
writeSkimList.add(mollerSkimmer);
Expand Down Expand Up @@ -130,8 +138,8 @@ public void setThreeBodyOutputFile(String outputFile){
this.threeBodyOutputFile=outputFile;
}

public void setFEEOutputFile(String outputFile){
this.FEEOutputFile=outputFile;
public void setFeeOutputFile(String outputFile){
this.feeOutputFile=outputFile;
}
public void setMollerOutputFile(String outputFile){
this.mollerOutputFile=outputFile;
Expand All @@ -154,7 +162,7 @@ protected void detectorChanged(Detector detector) {
if(skimThreeBody)
threeBodySkimmer=setupSkimmer("ThreeBody",threeBodyOutputFile, threeBodyParamFile);
if(skimFEE)
FEESkimmer=setupSkimmer("FEE",FEEOutputFile, FEEParamFile);
feeSkimmer=setupSkimmer("FEE",feeOutputFile, feeParamFile);
if(skimMoller)
mollerSkimmer=setupSkimmer("Moller",mollerOutputFile, mollerParamFile);
}
Expand Down Expand Up @@ -188,8 +196,8 @@ public void setThreeBodyParamFile(String pFile){
this.threeBodyParamFile=pFile;
}

public void setFEEParamFile(String pFile){
this.FEEParamFile=pFile;
public void setFeeParamFile(String pFile){
this.feeParamFile=pFile;
}

public void setMollerParamFile(String pFile){
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
requireFEETrigger true
useFEETopTrigger true
useFEEBotTrigger true
Loading
Loading