44 BmnStatus Decode(TString dirname, TString startFile, Bool_t runCurrent);
68 static void StripView(TString OrigFileName,
70 uint32_t periodID = 8,
73 bool FillOccupancy =
true);
76 template<
typename SST>
77 static void InitCanvas(TString DetName,
78 unique_ptr<SST>& stationSet,
80 vector<PadInfo*>& canStripPads,
81 vector<vector<vector<TH1F*>>>* histStrip)
87 for (Int_t iStation = 0; iStation < stationSet->GetNStations(); iStation++) {
88 vector<vector<TH1F*>> rowGEM;
89 auto* st = stationSet->GetStation(iStation);
90 sumMods += st->GetNModules();
91 for (Int_t iModule = 0; iModule < st->GetNModules(); iModule++) {
93 auto* mod = st->GetModule(iModule);
97 if (maxLayers < mod->GetNStripLayers())
98 maxLayers = mod->GetNStripLayers();
100 for (Int_t iLayer = 0; iLayer < (isSil ? 2 : mod->GetNStripLayers()); iLayer++) {
101 auto lay = mod->GetStripLayer(iLayer);
102 if (isSil && iStation != 0) {
103 auto& lay1 = mod->GetStripLayer(iLayer * 2);
104 auto& lay2 = mod->GetStripLayer(iLayer * 2 + 1);
105 if (lay1.GetLastStripNumber() > lay2.GetLastStripNumber())
110 TString
name = Form(
"%s_%d_Station_%d_module_%d_layer_%d", DetName.Data(), iCol, iStation,
113 TString title = Form(
"Station_%d_module_%d_layer_%d", iStation, iModule, iLayer);
116 h =
new TH1F(name, title, lay.GetLastStripNumber() + 1, 0, lay.GetLastStripNumber() + 1);
118 h =
new TH1F(name, title, lay.GetNStrips(), 0, lay.GetNStrips());
119 h->GetXaxis()->SetTitle(
"Strip Number");
120 h->GetYaxis()->SetTitle(
"Activation Count");
124 rowGEM.push_back(colGEM);
126 histStrip[iCol].push_back(rowGEM);
130 TString
name = DetName +
"Canvas";
132 canStrip->Divide(maxLayers, sumMods, 0.01 / maxLayers, 0.01 / sumMods);
134 canStripPads.resize(sumMods * maxLayers,
nullptr);
135 for (Int_t iStation = 0; iStation < stationSet->GetNStations(); iStation++) {
136 auto* st = stationSet->GetStation(iStation);
137 for (Int_t iModule = 0; iModule < st->GetNModules(); iModule++) {
138 auto* mod = st->GetModule(iModule);
139 for (Int_t iLayer = 0; iLayer < (isSil ? 2 : mod->GetNStripLayers()); iLayer++) {
140 Int_t iPad = modCtr * maxLayers + iLayer;
142 p->
current = histStrip[0][iStation][iModule][iLayer];
143 p->
ref = histStrip[1][iStation][iModule][iLayer];
144 p->
ref->SetLineColor(kRed);
146 canStripPads[iPad] = p;
147 canStrip->GetPad(iPad + 1)->SetGrid();
154 template<
typename DigiType>
155 static void FillHists(vector<vector<vector<TH1F*>>>& hist_vec, TClonesArray* digs,
bool set_bin_content =
false)
157 for (Int_t iDig = 0; iDig < digs->GetEntriesFast(); iDig++) {
158 DigiType* dig = (DigiType*)digs->UncheckedAt(iDig);
159 if (!(dig->IsGoodDigit()))
161 Int_t
module = dig->GetModule();
162 Int_t station = dig->GetStation();
163 Int_t layer = dig->GetStripLayer();
164 Int_t strip = dig->GetStripNumber();
165 if (set_bin_content) {
166 hist_vec[station][module][layer]->SetBinContent(strip, dig->GetStripNoise());
168 hist_vec[station][module][layer]->Fill(strip);
180 void ProcessFileRun(TString digiName, UInt_t timeLimit =
WAIT_LIMIT);
181 static TString WatchNext(TString dirname, TString filename, Int_t cycleWait);
182 static TString WatchNext(Int_t inotifDir, Int_t cycleWait);
183 static Int_t GetRunIdFromName(TString name);
190 map<DetectorId, bool> fDetectorSetup;
208 bool _do_process_stat_ev;
209 bool _do_process_norm_ev;
211 uint32_t _digi_socket;