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>
46 typedef std::vector<TSLine> TSLines;
51 void event()
override;
56 void makeDebugOutput();
76 unsigned sl = hit.getISuperLayer();
77 if (sl % 2 == 1) pattern |= (1 << ((sl - 1) / 2));
95 std::string padto(std::string s,
unsigned l)
98 s.insert(s.begin(), l - s.size(),
' ');
102 std::string padright(std::string s,
unsigned l)
105 s.insert(s.end(), l - s.size(),
' ');
111 bool related =
false;
113 if (&ts == &hit) {related =
true;}
117 void sorted_insert(TSLines& lines, TSLine& line, std::string& arrayname, std::string& firstsortarray, std::string& secondsortarray)
119 bool inserted =
false;
120 bool related =
false;
121 TSLines::iterator it = lines.begin();
124 for (TSLines::iterator i = lines.begin(); i < lines.end(); ++i) {
125 if (i->hit->getISuperLayer() % 2 != line.hit->getISuperLayer() % 2) {
128 if (have_relation(track, *(i->hit), arrayname)) {
131 if (i->hit->getSegmentID() > line.hit->getSegmentID()) {
140 if (!inserted) {++it; }
141 lines.insert(it, line);
145 for (TSLines::iterator i = it; i < lines.end(); ++i) {
146 if (i->hit->getISuperLayer() % 2 != line.hit->getISuperLayer() % 2) {
149 if (have_relation(track, *(i->hit), arrayname)) {
152 if (i->hit->getSegmentID() > line.hit->getSegmentID()) {
161 if (!inserted) {++it; }
162 lines.insert(it, line);
164 lines.push_back(line);
220 TH1F* m_neuroHWOutdzall =
nullptr;
221 TH1F* m_neuroHWOutdz0 =
nullptr;
222 TH1F* m_neuroHWOutdz1 =
nullptr;
223 TH1F* m_neuroHWOutdz2 =
nullptr;
224 TH1F* m_neuroHWOutdz3 =
nullptr;
225 TH1F* m_neuroHWSimRecodZ =
nullptr;
227 TH1F* m_neuroHWOutZ =
nullptr;
228 TH1F* m_recoZ =
nullptr;
229 TH1F* m_recoZ_related =
nullptr;
230 TH1F* m_neuroHWOutSTTZ =
nullptr;
231 TH1F* m_neuroHWOutCosTheta =
nullptr;
232 TH1F* m_neuroHWOutPhi0 =
nullptr;
233 TH1F* m_neuroHWOutPt =
nullptr;
234 TH1F* m_neuroHWOutP =
nullptr;
235 TH1F* m_neuroHWOutm_time =
nullptr;
236 TH1F* m_neuroHWValTracksNumber =
nullptr;
237 TH1F* m_neuroHWSector =
nullptr;
238 TH1F* m_neuroHWInTSID =
nullptr;
239 TH1F* m_neuroHWInTSIDSel =
nullptr;
240 TH1F* m_neuroHWInCDCFE =
nullptr;
241 TH1F* m_neuroHWInm_time =
nullptr;
242 TH1F* m_neuroHWIn2DTracksNumber =
nullptr;
244 TH1F* m_neuroHWOutHwSimdZ =
nullptr;
245 TH1F* m_neuroHWSimZ =
nullptr;
246 TH1F* m_neuroHWSimCosTheta =
nullptr;
247 TH1F* m_neuroErrors =
nullptr;
248 TH1F* m_neuroHWValTSCountAx =
nullptr;
249 TH1F* m_neuroHWValTSCountSt =
nullptr;
251 unsigned m_errcount = 0;
252 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...
Accessor to arrays stored in the data store.
Type-safe access to single objects in the data store.
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 initialize() override
Module functions.
void condFill(TH1F *histo, float value)
Fill a histogram only with non-zero values.
void event() override
Function to process event record.
std::string m_unpacked2DTracksName
Name for 2D finder tracks from unpacker.
void endRun() override
Function to process end_run record.
bool m_useSimTracks
Switch to turn on use of hw sim tracks.
void terminate() override
Function to terminate module.
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.
void beginRun() override
Function to process begin_run record.
std::string m_histogramDirectoryName
Name of the histogram directory in ROOT file.
std::string m_recoTracksName
Name for the RecoTrack array name.
virtual ~CDCTriggerNeuroDQMOnlineModule()
Destructor.
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.
CDCTriggerNeuroDQMOnlineModule()
Constructor.
StoreArray< CDCTriggerSegmentHit > m_unpackedNeuroInputAllSegmentHits
StoreArray for all TS hits from neuro unpacker.
void defineHisto() override
Histogram definitions such as TH1(), TH2(), TNtuple(), TTree()....
Abstract base class for different kinds of events.