Skip to content

Commit 84bd50b

Browse files
Merge pull request #231 from JeffersonLab/iss228
Add hit removal driver and recon steering file
2 parents 687bca9 + 20c3094 commit 84bd50b

File tree

2 files changed

+235
-0
lines changed

2 files changed

+235
-0
lines changed
Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<lcsim xmlns:xs="http://www.w3.org/2001/XMLSchema-instance" xs:noNamespaceSchemaLocation="http://www.lcsim.org/schemas/lcsim/1.0/lcsim.xsd">
3+
<!--
4+
@brief Steering file that will be used for pass 2 reconstruction of
5+
the 2015 Engineering Run data.
6+
@author <a href="mailto:meeg@slac.stanford.edu">Sho Uemura</a>
7+
@author <a href="mailto:omoreno1@ucsc.edu">Omar Moreno</a>
8+
-->
9+
<execute>
10+
<!--RF driver-->
11+
<driver name="RfFitter"/>
12+
13+
<!-- Ecal reconstruction drivers -->
14+
<driver name="EcalRunningPedestal"/>
15+
<driver name="EcalRawConverter" />
16+
<driver name="ReconClusterer" />
17+
<driver name="CopyCluster" />
18+
<!-- SVT reconstruction drivers -->
19+
<driver name="RawTrackerHitSensorSetup"/>
20+
<driver name="RemoveRawHits"/>
21+
<driver name="RawTrackerHitFitterDriver" />
22+
<driver name="TrackerHitDriver"/>
23+
<driver name="HelicalTrackHitDriver"/>
24+
<!--
25+
Will run track finding algorithm using layers 345 as a seed,
26+
layer 2 to confirm and layers 1 and 6 to extend. The collection
27+
name of the tracks found with this strategy will be "MatchedTracks".
28+
-->
29+
<driver name="TrackReconSeed345Conf2Extd16"/>
30+
<!--
31+
Will run track finding algorithm using layers 456 as a seed,
32+
layer 3 to confirm and layers 2 and 1 to extend. The collection
33+
name of the tracks found with this strategy will be
34+
"Tracks_s456_c3_e21"
35+
-->
36+
<driver name="TrackReconSeed456Conf3Extd21"/>
37+
<!--
38+
Will run track finding algorithm using layers 123 as a seed,
39+
layer 4 to confirm and layers 5 and 6 to extend. The collection
40+
name of the tracks found with this strategy will be
41+
"Tracks_s123_c4_e56"
42+
-->
43+
<driver name="TrackReconSeed123Conf4Extd56"/>
44+
<!--
45+
Will run track finding algorithm using layers 123 as a seed,
46+
layer 5 to confirm and layers 4 and 6 to extend. The collection
47+
name of the tracks found with this strategy will be
48+
"Tracks_s123_c5_e46"
49+
-->
50+
<driver name="TrackReconSeed123Conf5Extd46"/>
51+
<!--
52+
TrackDataDriver needs to be run before ReconParticleDriver so the
53+
ReconstructedParticle types are properly set.
54+
-->
55+
<driver name="MergeTrackCollections"/>
56+
<driver name="GBLRefitterDriver" />
57+
<driver name="TrackDataDriver" />
58+
<driver name="ReconParticleDriver" />
59+
<driver name="LCIOWriter"/>
60+
<driver name="CleanupDriver"/>
61+
</execute>
62+
<drivers>
63+
64+
<driver name="RfFitter" type="org.hps.evio.RfFitterDriver"/>
65+
66+
<!-- Ecal reconstruction drivers -->
67+
<driver name="EcalRunningPedestal" type="org.hps.recon.ecal.EcalRunningPedestalDriver">
68+
<logLevel>CONFIG</logLevel>
69+
</driver>
70+
<driver name="EcalRawConverter" type="org.hps.recon.ecal.EcalRawConverterDriver">
71+
<ecalCollectionName>EcalCalHits</ecalCollectionName>
72+
</driver>
73+
<driver name="ReconClusterer" type="org.hps.recon.ecal.cluster.ReconClusterDriver">
74+
<logLevel>WARNING</logLevel>
75+
<outputClusterCollectionName>EcalClusters</outputClusterCollectionName>
76+
</driver>
77+
<driver name="CopyCluster" type="org.hps.recon.ecal.cluster.CopyClusterCollectionDriver">
78+
<inputCollectionName>EcalClusters</inputCollectionName>
79+
<outputCollectionName>EcalClustersCorr</outputCollectionName>
80+
</driver>
81+
82+
<!-- SVT reconstruction drivers -->
83+
<driver name="RawTrackerHitSensorSetup" type="org.lcsim.recon.tracking.digitization.sisim.config.RawTrackerHitSensorSetup">
84+
<readoutCollections>SVTRawTrackerHits</readoutCollections>
85+
</driver>
86+
<driver name="RemoveRawHits" type="org.hps.readout.svt.DropSVTHits">
87+
<enableHitEfficiency>true</enableHitEfficiency>
88+
<enableHitEfficiencyDistribution>false</enableHitEfficiencyDistribution>
89+
<layer1HitEfficiency>0.95</layer1HitEfficiency>
90+
</driver>
91+
<driver name="RawTrackerHitFitterDriver" type="org.hps.recon.tracking.RawTrackerHitFitterDriver">
92+
<fitAlgorithm>Pileup</fitAlgorithm>
93+
<useTimestamps>false</useTimestamps>
94+
<correctTimeOffset>true</correctTimeOffset>
95+
<correctT0Shift>true</correctT0Shift>
96+
<useTruthTime>false</useTruthTime>
97+
<subtractTOF>true</subtractTOF>
98+
<subtractTriggerTime>true</subtractTriggerTime>
99+
<correctChanT0>true</correctChanT0>
100+
<debug>false</debug>
101+
</driver>
102+
<driver name="TrackerHitDriver" type="org.hps.recon.tracking.DataTrackerHitDriver">
103+
<neighborDeltaT>8.0</neighborDeltaT>
104+
</driver>
105+
<driver name="HelicalTrackHitDriver" type="org.hps.recon.tracking.HelicalTrackHitDriver">
106+
<debug>false</debug>
107+
<clusterTimeCut>12.0</clusterTimeCut>
108+
<maxDt>16.0</maxDt>
109+
<clusterAmplitudeCut>400.0</clusterAmplitudeCut>
110+
</driver>
111+
<!-- SVT Track finding -->
112+
<driver name="TrackReconSeed345Conf2Extd16" type="org.hps.recon.tracking.TrackerReconDriver">
113+
<trackCollectionName>Tracks_s345_c2_e16</trackCollectionName>
114+
<strategyResource>HPS_s345_c2_e16.xml</strategyResource>
115+
<debug>false</debug>
116+
<rmsTimeCut>8.0</rmsTimeCut>
117+
</driver>
118+
<driver name="TrackReconSeed456Conf3Extd21" type="org.hps.recon.tracking.TrackerReconDriver">
119+
<trackCollectionName>Tracks_s456_c3_e21</trackCollectionName>
120+
<strategyResource>HPS_s456_c3_e21.xml</strategyResource>
121+
<debug>false</debug>
122+
<rmsTimeCut>8.0</rmsTimeCut>
123+
</driver>
124+
<driver name="TrackReconSeed123Conf4Extd56" type="org.hps.recon.tracking.TrackerReconDriver">
125+
<trackCollectionName>Tracks_s123_c4_e56</trackCollectionName>
126+
<strategyResource>HPS_s123_c4_e56.xml</strategyResource>
127+
<debug>false</debug>
128+
<rmsTimeCut>8.0</rmsTimeCut>
129+
</driver>
130+
<driver name="TrackReconSeed123Conf5Extd46" type="org.hps.recon.tracking.TrackerReconDriver">
131+
<trackCollectionName>Tracks_s123_c5_e46</trackCollectionName>
132+
<strategyResource>HPS_s123_c5_e46.xml</strategyResource>
133+
<debug>false</debug>
134+
<rmsTimeCut>8.0</rmsTimeCut>
135+
</driver>
136+
<driver name="MergeTrackCollections" type="org.hps.recon.tracking.MergeTrackCollections" />
137+
<driver name="TrackDataDriver" type="org.hps.recon.tracking.TrackDataDriver" />
138+
<driver name="ReconParticleDriver" type="org.hps.recon.particle.HpsReconParticleDriver" >
139+
<ecalClusterCollectionName>EcalClustersCorr</ecalClusterCollectionName>
140+
<trackCollectionNames>MatchedTracks GBLTracks</trackCollectionNames>
141+
</driver>
142+
<driver name="GBLRefitterDriver" type="org.hps.recon.tracking.gbl.GBLRefitterDriver"/>
143+
<driver name="LCIOWriter" type="org.lcsim.util.loop.LCIODriver">
144+
<outputFilePath>${outputFile}.slcio</outputFilePath>
145+
</driver>
146+
<driver name="CleanupDriver" type="org.lcsim.recon.tracking.digitization.sisim.config.ReadoutCleanupDriver"/>
147+
<driver name="AidaSaveDriver" type="org.lcsim.job.AidaSaveDriver">
148+
<outputFileName>${outputFile}.root</outputFileName>
149+
</driver>
150+
</drivers>
151+
</lcsim>
Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,84 @@
1+
package org.hps.readout.svt;
2+
3+
import org.lcsim.detector.tracker.silicon.HpsSiSensor;
4+
import org.lcsim.event.EventHeader;
5+
import org.lcsim.event.RawTrackerHit;
6+
import org.lcsim.lcio.LCIOConstants;
7+
import org.lcsim.util.Driver;
8+
9+
import java.util.ArrayList;
10+
import java.util.Iterator;
11+
import java.util.List;
12+
13+
/**
14+
* Removes raw tracker hits based on SVT Inefficiencies.
15+
*
16+
* @author Matt Solt <mrsolt@slac.stanford.edu>
17+
*/
18+
19+
public class DropSVTHits extends Driver {
20+
21+
//Hit Efficiencies
22+
private boolean enableHitEfficiency = false;
23+
private boolean enableHitEfficiencyDistribution = false;
24+
private double layer1HitEfficiency = 1.0;
25+
26+
//Collection Names
27+
private String removedOutputCollection = "SVTRawTrackerHitsRemoved";
28+
private String rawTrackerHitCollectionName = "SVTRawTrackerHits";
29+
30+
public void setEnableHitEfficiency(boolean enableHitEfficiency) {
31+
this.enableHitEfficiency = enableHitEfficiency;
32+
}
33+
34+
public void setEnableHitEfficiencyDistribution(boolean enableHitEfficiencyDistribution) {
35+
this.enableHitEfficiencyDistribution = enableHitEfficiencyDistribution;
36+
}
37+
38+
public void setLayer1HitEfficiency(double layer1HitEfficiency) {
39+
this.layer1HitEfficiency = layer1HitEfficiency;
40+
}
41+
42+
public void process(EventHeader event) {
43+
44+
List<RawTrackerHit> rawHits = event.get(RawTrackerHit.class, rawTrackerHitCollectionName);
45+
List<RawTrackerHit> removedRawHits = new ArrayList<RawTrackerHit>();
46+
47+
Iterator<RawTrackerHit> iter = rawHits.iterator();
48+
while (iter.hasNext()) {
49+
RawTrackerHit hit = iter.next();
50+
if(!KeepHit(hit,enableHitEfficiencyDistribution,layer1HitEfficiency) && enableHitEfficiency){
51+
removedRawHits.add(hit);
52+
iter.remove();
53+
}
54+
}
55+
56+
int flags = 1 << LCIOConstants.TRAWBIT_ID1;
57+
event.put(removedOutputCollection, removedRawHits, RawTrackerHit.class, flags);
58+
}
59+
60+
private boolean KeepHit(RawTrackerHit hit, boolean enableHitEfficiencyDistribution, double layer1HitEfficiency) {
61+
boolean keepHit = true;
62+
HpsSiSensor sensor = (HpsSiSensor) hit.getDetectorElement();
63+
int layer = sensor.getLayerNumber();
64+
double random = Math.random();
65+
if(!enableHitEfficiencyDistribution){
66+
if (random > layer1HitEfficiency && (layer == 1 || layer == 2)){
67+
keepHit = false;
68+
}
69+
return keepHit;
70+
}
71+
else{
72+
double eff = computeEfficiency(hit,sensor);
73+
if(random > eff){
74+
keepHit = false;
75+
}
76+
return keepHit;
77+
}
78+
}
79+
80+
private double computeEfficiency(RawTrackerHit hit, HpsSiSensor sensor){
81+
double eff = 1.0;
82+
return eff;
83+
}
84+
}

0 commit comments

Comments
 (0)