11 #include <framework/core/HistoModule.h>
13 #include <framework/datastore/StoreArray.h>
14 #include <framework/datastore/StoreObjPtr.h>
15 #include <trg/cdc/dataobjects/CDCTriggerTrack.h>
16 #include <trg/cdc/dataobjects/CDCTriggerSegmentHit.h>
17 #include <trg/cdc/dataobjects/CDCTriggerMLPInput.h>
18 #include <tracking/dataobjects/RecoTrack.h>
19 #include <framework/dataobjects/BinnedEventT0.h>
49 typedef std::vector<TSLine> TSLines;
52 void initialize()
override;
53 void beginRun()
override;
54 void event()
override;
55 void endRun()
override;
56 void terminate()
override;
59 void makeDebugOutput();
66 void defineHisto()
override;
79 unsigned sl = hit.getISuperLayer();
80 if (sl % 2 == 1) pattern |= (1 << ((sl - 1) / 2));
98 std::string padto(std::string s,
unsigned l)
101 s.insert(s.begin(), l - s.size(),
' ');
105 std::string padright(std::string s,
unsigned l)
108 s.insert(s.end(), l - s.size(),
' ');
114 bool related =
false;
116 if (&ts == &hit) {related =
true;}
120 void sorted_insert(TSLines& lines, TSLine& line, std::string& arrayname, std::string& firstsortarray, std::string& secondsortarray)
122 bool inserted =
false;
123 bool related =
false;
124 TSLines::iterator it = lines.begin();
127 for (TSLines::iterator i = lines.begin(); i < lines.end(); ++i) {
128 if (i->hit->getISuperLayer() % 2 != line.hit->getISuperLayer() % 2) {
131 if (have_relation(track, *(i->hit), arrayname)) {
134 if (i->hit->getSegmentID() > line.hit->getSegmentID()) {
143 if (!inserted) {++it; }
144 lines.insert(it, line);
148 for (TSLines::iterator i = it; i < lines.end(); ++i) {
149 if (i->hit->getISuperLayer() % 2 != line.hit->getISuperLayer() % 2) {
152 if (have_relation(track, *(i->hit), arrayname)) {
155 if (i->hit->getSegmentID() > line.hit->getSegmentID()) {
164 if (!inserted) {++it; }
165 lines.insert(it, line);
167 lines.push_back(line);
223 TH1F* m_neuroHWOutdzall =
nullptr;
224 TH1F* m_neuroHWOutdz0 =
nullptr;
225 TH1F* m_neuroHWOutdz1 =
nullptr;
226 TH1F* m_neuroHWOutdz2 =
nullptr;
227 TH1F* m_neuroHWOutdz3 =
nullptr;
228 TH1F* m_neuroHWSimRecodZ =
nullptr;
230 TH1F* m_neuroHWOutZ =
nullptr;
231 TH1F* m_recoZ =
nullptr;
232 TH1F* m_recoZ_related =
nullptr;
233 TH1F* m_neuroHWOutSTTZ =
nullptr;
234 TH1F* m_neuroHWOutCosTheta =
nullptr;
235 TH1F* m_neuroHWOutPhi0 =
nullptr;
236 TH1F* m_neuroHWOutPt =
nullptr;
237 TH1F* m_neuroHWOutP =
nullptr;
238 TH1F* m_neuroHWOutm_time =
nullptr;
239 TH1F* m_neuroHWValTracksNumber =
nullptr;
240 TH1F* m_neuroHWSector =
nullptr;
241 TH1F* m_neuroHWInTSID =
nullptr;
242 TH1F* m_neuroHWInTSIDSel =
nullptr;
243 TH1F* m_neuroHWInCDCFE =
nullptr;
244 TH1F* m_neuroHWInm_time =
nullptr;
245 TH1F* m_neuroHWIn2DTracksNumber =
nullptr;
247 TH1F* m_neuroHWOutHwSimdZ =
nullptr;
248 TH1F* m_neuroHWSimZ =
nullptr;
249 TH1F* m_neuroHWSimCosTheta =
nullptr;
250 TH1F* m_neuroErrors =
nullptr;
251 TH1F* m_neuroHWValTSCountAx =
nullptr;
252 TH1F* m_neuroHWValTSCountSt =
nullptr;
254 unsigned m_errcount = 0;
255 std::vector<std::string> m_errdict{
"Not All HWTrack ATS in 2DInTrack",
"|HW-SW| > 1cm",
"Delta Input IDs not all 0",
"Delta Input Alphas not all 0",
"Drifttime Overflow / Scaling Error",
"TS only in HW",
"TS only in SW",
"Multiple ET per Track",
"<4 related Axial TS",
"<3 related Stereo TS",
"Drift Time diff",
"Eventcounter"};
Combination of several CDCHits to a track segment hit for the trigger.
Track created by the CDC trigger.
HistoModule.h is supposed to be used instead of Module.h for the modules with histogram definitions t...
StoreArray< CDCTriggerMLPInput > m_simNeuroInputVector
StoreArray for neuro input vector from TSIM.
StoreArray< CDCTriggerTrack > m_unpackedNeuroInput2DTracks
StoreArray for neuro input 2dfinder tracks.
StoreArray< CDCTriggerTrack > m_unpackedNeuroTracks
StoreArray for neuro tracks from unpacker.
std::string m_unpackedNeuroInputSegmentHitsName
Name for neuro input Track segments.
void condFill(TH1F *histo, float value)
Fill a histogram only with non-zero values.
std::string m_unpacked2DTracksName
Name for 2D finder tracks from unpacker.
bool m_useSimTracks
Switch to turn on use of hw sim tracks.
std::string m_unpackedNeuroInput2DTracksName
Name for neuro input 2d finder tracks.
StoreArray< CDCTriggerMLPInput > m_unpackedNeuroInputVector
StoreArray for neuro input vector from unpacker.
std::string m_unpackedNeuroInputAllSegmentHitsName
Name for TS hits from unpacker.
StoreArray< CDCTriggerTrack > m_simNeuroTracks
StoreArray for neuro tracks from TSIM.
std::string m_simNeuroInputVectorName
Name for simulated neuro input vector using HW TS, HW 2D.
std::string m_histogramDirectoryName
Name of the histogram directory in ROOT file.
std::string m_recoTracksName
Name for the RecoTrack array name.
bool m_useRecoTracks
Switch to turn on use of recotracks.
std::string m_simNeuroTracksName
name of the storearray for hwsim tracks
unsigned getPattern(CDCTriggerTrack *track, std::string hitCollectionName)
get pattern of the track
std::string m_unpackedNeuroInputVectorName
Name for neuro input vector from unpacker.
bool isValidPattern(unsigned pattern)
Validity of the pattern.
StoreObjPtr< BinnedEventT0 > m_eventTime
storeobjpointer for event time
StoreArray< CDCTriggerSegmentHit > m_unpackedNeuroInputSegmentHits
StoreArray for neuro input Track segments.
StoreArray< CDCTriggerTrack > m_unpacked2DTracks
StoreArray for 2D finder tracks from unpacker.
std::string m_unpackedNeuroTracksName
Name for neuro tracks from unpacker.
StoreArray< RecoTrack > m_RecoTracks
StoreArray for RecoTracks.
StoreArray< CDCTriggerSegmentHit > m_unpackedNeuroInputAllSegmentHits
StoreArray for all TS hits from neuro unpacker.
Abstract base class for different kinds of events.