Skip to content

Commit 520bbbe

Browse files
jdbriceakioogawaCopilotplexoos
authored
Fwd Tracking upgrades for Run22 productions (#731)
This PR removes or wraps debug logging etc. in constexpr flags to remove them from production running. Various improvements for memory consumption. --------- Co-authored-by: Akio Ogawa <[email protected]> Co-authored-by: Copilot <[email protected]> Co-authored-by: Dmitri Smirnov <[email protected]>
1 parent 477fcad commit 520bbbe

File tree

12 files changed

+2803
-1663
lines changed

12 files changed

+2803
-1663
lines changed

StRoot/StFwdTrackMaker/StFwdHitLoader.cxx

Lines changed: 628 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
#ifndef ST_FWD_HIT_LOADER_H
2+
#define ST_FWD_HIT_LOADER_H
3+
4+
#ifndef __CINT__
5+
#include "StFwdTrackMaker/include/Tracker/FwdHit.h"
6+
#include "StFwdTrackMaker/include/Tracker/FwdDataSource.h"
7+
#else
8+
class FwdHit;
9+
#endif
10+
11+
class StEvent;
12+
class StMuDstMaker;
13+
class St_g2t_fts_hit;
14+
class StFcsDb;
15+
16+
17+
class FstRasterizer {
18+
public:
19+
FstRasterizer( double r = 3.0, double phi = 0.0040906154 ) {
20+
mRasterR = r;
21+
mRasterPhi = phi;
22+
}
23+
void setRPhi( double r, double phi ) {
24+
mRasterR = r;
25+
mRasterPhi = phi;
26+
}
27+
~FstRasterizer() {}
28+
29+
TVector3 raster(TVector3 p0) {
30+
TVector3 p = p0;
31+
double r = p.Perp();
32+
double phi = p.Phi();
33+
const double minR = 5.0;
34+
// 5.0 is the r minimum of the Si
35+
p.SetPerp(minR + (std::floor((r - minR) / mRasterR) * mRasterR + mRasterR / 2.0));
36+
p.SetPhi(-TMath::Pi() + (std::floor((phi + TMath::Pi()) / mRasterPhi) * mRasterPhi + mRasterPhi / 2.0));
37+
return p;
38+
}
39+
double mRasterR, mRasterPhi;
40+
};
41+
42+
class StFwdHitLoader {
43+
public:
44+
StFwdHitLoader() :
45+
mFttDataSource(StFwdHitLoader::DataSource::STEVENT),
46+
mFstDataSource(StFwdHitLoader::DataSource::STEVENT),
47+
mEpdDataSource(StFwdHitLoader::DataSource::STEVENT)
48+
{}
49+
~StFwdHitLoader() {}
50+
void clear() {
51+
#if !defined (__CINT__)
52+
mFwdHitsFtt.clear();
53+
mFwdHitsFst.clear();
54+
mFwdHitsEpd.clear();
55+
#endif
56+
57+
// clear vectors for visualization OBJ hits
58+
mSpacepointsFtt.clear();
59+
mSpacepointsFst.clear();
60+
mSpacepointsEpd.clear();
61+
}
62+
63+
#if !defined(__CINT__) && !defined(__CLING__)
64+
/********************************/
65+
// Load hits from the FTT detector (location based on mFttDataSource)
66+
// * @param mcTrackMap : map of mc tracks
67+
// * @param hitMap : FTT hitmap to populate
68+
// * @return number of hits loaded
69+
// * @note: This function is called by StFwdTrackMaker::Make()
70+
int loadFttHits( FwdDataSource::McTrackMap_t &mcTrackMap, FwdDataSource::HitMap_t &hitMap );
71+
int loadFttPointsFromStEvent( FwdDataSource::McTrackMap_t &mcTrackMap, FwdDataSource::HitMap_t &hitMap );
72+
int loadFttPointsFromGEANT( FwdDataSource::McTrackMap_t &mcTrackMap, FwdDataSource::HitMap_t &hitMap );
73+
74+
/********************************/
75+
// Load hits from the FST detector (location based on mFstDataSource)
76+
// * @param mcTrackMap : map of mc tracks
77+
// * @param hitMap : FST hitmap to populate
78+
// * @return number of hits loaded
79+
// * @note: This function is called by StFwdTrackMaker::Make()
80+
int loadFstHits( FwdDataSource::McTrackMap_t &mcTrackMap, FwdDataSource::HitMap_t &hitMap );
81+
int loadFstHitsFromStEvent( FwdDataSource::McTrackMap_t &mcTrackMap, FwdDataSource::HitMap_t &hitMap );
82+
int loadFstHitsFromMuDst( FwdDataSource::McTrackMap_t &mcTrackMap, FwdDataSource::HitMap_t &hitMap );
83+
int loadFstHitsFromGEANT( FwdDataSource::McTrackMap_t &mcTrackMap, FwdDataSource::HitMap_t &hitMap );
84+
85+
/********************************/
86+
// Load hits from the EPD detector (location based on mEpdDataSource)
87+
// * @param mcTrackMap : map of mc tracks
88+
// * @param hitMap : EPD hitmap to populate
89+
// * @return number of hits loaded
90+
// * @note: This function is called by StFwdTrackMaker::Make()
91+
int loadEpdHits( FwdDataSource::McTrackMap_t &mcTrackMap, FwdDataSource::HitMap_t &hitMap, StFcsDb *fcsDb = nullptr );
92+
int loadEpdHitsFromStEvent( FwdDataSource::McTrackMap_t &mcTrackMap, FwdDataSource::HitMap_t &hitMap, StFcsDb *fcsDb = nullptr );
93+
#endif
94+
95+
// all caps to avoid conflict with types themselves
96+
enum DataSource { GEANT=0, STEVENT, MUDST, IGNORE };
97+
/********************************/
98+
// Specify the data source for FTT, FST and EPD hits
99+
// * @param ds : data source (GEANT, StEvent, MuDst)
100+
// * @return None
101+
void setFttDataSource( DataSource ds ) { mFttDataSource = ds; }
102+
void setFstDataSource( DataSource ds ) { mFstDataSource = ds; }
103+
void setEpdDataSource( DataSource ds ) { mEpdDataSource = ds; }
104+
void setDataSource( DataSource ds ) { mFttDataSource = ds; mFstDataSource = ds; mEpdDataSource = ds; }
105+
106+
void setStEvent( StEvent *stEvent ) { mStEvent = stEvent; }
107+
void setMuDstMaker( StMuDstMaker *muDstMaker ) { mMuDstMaker = muDstMaker; }
108+
void setTables( St_g2t_fts_hit *stg_hits, St_g2t_fts_hit *fst_hits, St_g2t_fts_hit *epd_hits ) {
109+
mGeantFtt = stg_hits;
110+
mGeantFst = fst_hits;
111+
mGeantEpd = epd_hits;
112+
}
113+
FstRasterizer mFstRasterizer;
114+
protected:
115+
DataSource mFttDataSource;
116+
DataSource mFstDataSource;
117+
DataSource mEpdDataSource;
118+
float mEpdThreshold = 0.2;
119+
120+
// Pointers to these are used by StFwdTrackMaker, clear the vectors after each event
121+
#if !defined (__CINT__)
122+
vector<FwdHit> mFwdHitsFtt;
123+
vector<FwdHit> mFwdHitsFst;
124+
vector<FwdHit> mFwdHitsEpd;
125+
126+
// this disables logging at compile time
127+
constexpr static int kLogVerbose = 10;
128+
constexpr static int kLogInfo = 1;
129+
constexpr static int kLogSilent = 0;
130+
constexpr static int kLogLevel = kLogSilent;
131+
#endif
132+
133+
vector<TVector3> mSpacepointsFtt;
134+
vector<TVector3> mSpacepointsFst;
135+
vector<TVector3> mSpacepointsEpd;
136+
137+
/// Non-owning pointer: StEvent provided externally via `setStEvent`
138+
StEvent *mStEvent = nullptr; // pointer to StEvent
139+
/// Non-owning pointer: StMuDstMaker provided externally via `setMuDstMaker`
140+
StMuDstMaker *mMuDstMaker = nullptr; // pointer to StMuDstMaker
141+
142+
/// Non-owning pointers to GEANT hits
143+
St_g2t_fts_hit *mGeantFtt = nullptr; // pointer to GEANT FTT hits
144+
St_g2t_fts_hit *mGeantFst = nullptr; // pointer to GEANT FST hits
145+
St_g2t_fts_hit *mGeantEpd = nullptr; // pointer to GEANT EPD hits
146+
147+
148+
149+
bool verbosity = 0;
150+
};
151+
152+
153+
#endif // ST_FWD_HIT_LOADER_H

0 commit comments

Comments
 (0)