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>
51 typedef std::vector<TSLine> TSLines;
56 void event()
override;
61 void makeDebugOutput();
81 unsigned sl = hit.getISuperLayer();
82 if (sl % 2 == 1) pattern |= (1 << ((sl - 1) / 2));
100 std::string padto(std::string s,
unsigned l)
103 s.insert(s.begin(), l - s.size(),
' ');
107 std::string padright(std::string s,
unsigned l)
110 s.insert(s.end(), l - s.size(),
' ');
114 bool have_relation(
const CDCTriggerTrack& track,
const CDCTriggerSegmentHit& hit, std::string& arrayname)
116 bool related =
false;
117 for (
const CDCTriggerSegmentHit& ts : track.getRelationsTo<CDCTriggerSegmentHit>(arrayname)) {
118 if (&ts == &hit) {related =
true;}
122 void sorted_insert(TSLines& lines,
TSLine& line, std::string& arrayname, std::string& firstsortarray, std::string& secondsortarray)
124 bool inserted =
false;
125 bool related =
false;
126 TSLines::iterator it = lines.begin();
127 for (
const CDCTriggerTrack& track : line.hit->getRelationsFrom<CDCTriggerTrack>(firstsortarray)) {
129 for (TSLines::iterator i = lines.begin(); i < lines.end(); ++i) {
130 if (i->hit->getISuperLayer() % 2 != line.hit->getISuperLayer() % 2) {
133 if (have_relation(track, *(i->hit), arrayname)) {
136 if (i->hit->getSegmentID() > line.hit->getSegmentID()) {
145 if (!inserted) {++it; }
146 lines.insert(it, line);
148 for (
const CDCTriggerTrack& track : line.hit->getRelationsFrom<CDCTriggerTrack>(secondsortarray)) {
150 for (TSLines::iterator i = it; i < lines.end(); ++i) {
151 if (i->hit->getISuperLayer() % 2 != line.hit->getISuperLayer() % 2) {
154 if (have_relation(track, *(i->hit), arrayname)) {
157 if (i->hit->getSegmentID() > line.hit->getSegmentID()) {
166 if (!inserted) {++it; }
167 lines.insert(it, line);
169 lines.push_back(line);
225 TH1F* m_neuroHWOutdzall =
nullptr;
226 TH1F* m_neuroHWOutdz0 =
nullptr;
227 TH1F* m_neuroHWOutdz1 =
nullptr;
228 TH1F* m_neuroHWOutdz2 =
nullptr;
229 TH1F* m_neuroHWOutdz3 =
nullptr;
230 TH1F* m_neuroHWSimRecodZ =
nullptr;
232 TH1F* m_neuroHWOutZ =
nullptr;
233 TH1F* m_recoZ =
nullptr;
234 TH1F* m_recoZ_related =
nullptr;
235 TH1F* m_neuroHWOutSTTZ =
nullptr;
236 TH1F* m_neuroHWOutCosTheta =
nullptr;
237 TH1F* m_neuroHWOutPhi0 =
nullptr;
238 TH1F* m_neuroHWOutPt =
nullptr;
239 TH1F* m_neuroHWOutP =
nullptr;
240 TH1F* m_neuroHWOutm_time =
nullptr;
241 TH1F* m_neuroHWValTracksNumber =
nullptr;
242 TH1F* m_neuroHWSector =
nullptr;
243 TH1F* m_neuroHWInTSID =
nullptr;
244 TH1F* m_neuroHWInTSIDSel =
nullptr;
245 TH1F* m_neuroHWInCDCFE =
nullptr;
246 TH1F* m_neuroHWInm_time =
nullptr;
247 TH1F* m_neuroHWIn2DTracksNumber =
nullptr;
249 TH1F* m_neuroHWOutHwSimdZ =
nullptr;
250 TH1F* m_neuroHWSimZ =
nullptr;
251 TH1F* m_neuroHWSimCosTheta =
nullptr;
252 TH1F* m_neuroErrors =
nullptr;
253 TH1F* m_neuroHWValTSCountAx =
nullptr;
254 TH1F* m_neuroHWValTSCountSt =
nullptr;
256 unsigned m_errcount = 0;
257 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"};
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()....
Combination of several CDCHits to a track segment hit for the trigger.
Track created by the CDC trigger.
HistoModule()
Constructor.
Accessor to arrays stored in the data store.
Type-safe access to single objects in the data store.
Abstract base class for different kinds of events.