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;
54 void event()
override;
59 void makeDebugOutput();
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...
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.