142 int skippedHitsIneff = 0;
143 int skippedHitsOutRange = 0;
149 std::unique_ptr<std::vector<raw::ExternalTrigger>> trigcol(
new std::vector<raw::ExternalTrigger>);
156 std::vector<const sim::AuxDetSimChannel*> fAuxDetSimChannels;
159 nauxdets = fAuxDetSimChannels.size();
162 for (
size_t i=0; i<fAuxDetSimChannels.size(); ++i) {
167 const std::vector<sim::AuxDetIDE>& setOfIDEs = c->
AuxDetIDEs();
172 for (
size_t j=0; j<setOfIDEs.size(); ++j) {
176 entryx = setOfIDEs[j].entryX;
177 entryy = setOfIDEs[j].entryY;
178 entryz = setOfIDEs[j].entryZ;
179 entryt = setOfIDEs[j].entryT;
180 exitx = setOfIDEs[j].exitX;
181 exity = setOfIDEs[j].exitY;
182 exitz = setOfIDEs[j].exitZ;
183 exitt = setOfIDEs[j].exitT;
184 exitpx = setOfIDEs[j].exitMomentumX;
185 exitpy = setOfIDEs[j].exitMomentumY;
186 exitpz = setOfIDEs[j].exitMomentumZ;
187 energy = setOfIDEs[j].energyDeposited;
188 trackid = setOfIDEs[j].trackID;
192 double randEff =
fFlat.fire();
199 double triggerOffsetTPC = clockData.TriggerOffsetTPC()*1.e3;
200 double readoutWindowSizeTPC = detProp.ReadOutWindowSize();
201 double clockSpeedTPC = clockData.TPCClock().Frequency();
202 double windowLength = readoutWindowSizeTPC/clockSpeedTPC;
206 if (time<0 || time>windowLength*1000) {
207 ++skippedHitsOutRange;
211 double edepIDE = setOfIDEs[j].energyDeposited*1000;
215 for (it =
tickv.begin(); it !=
tickv.end(); ++it) {
217 if (ct->tick == tickIDE && ct->auxDetID ==
auxdetid) {
224 if (it==
tickv.end()) {
234 std::map<int, int >trigmap;
237 if (
tickv.size()>1) {
239 for (it =
tickv.begin(); it !=
tickv.end(); ++it) {
247 (ct.auxDetID >= 92 && ct.eDep > 1.e-6) )
253 unsigned int iRM=0;
unsigned int iCL=0;
unsigned int iNU=0;
unsigned int iNL=0;
254 unsigned int iSU=0;
unsigned int iSL=0;
unsigned int iWU=0;
unsigned int iEL=0;
256 if (ct.auxDetID<6) iSL=ct.tick;
257 if (ct.auxDetID>5 && ct.auxDetID<16) iEL=ct.tick;
258 if (ct.auxDetID>15 && ct.auxDetID<22) iNL=ct.tick;
259 if (ct.auxDetID>21 && ct.auxDetID<28) iNU=ct.tick;
260 if (ct.auxDetID>27 && ct.auxDetID<38) iWU=ct.tick;
261 if (ct.auxDetID>37 && ct.auxDetID<44) iSU=ct.tick;
262 if (ct.auxDetID>43 && ct.auxDetID<57) iCL=ct.tick;
263 if (ct.auxDetID>66 && ct.auxDetID<83) iRM=ct.tick;
266 if (start !=
tickv.end()) {
267 for (it2 = start; it2 !=
tickv.end(); ++it2) {
273 if ( (ct2.auxDetID >= 44 && ct2.auxDetID <= 91
275 || (ct2.auxDetID <=43
277 (ct2.auxDetID >= 92 && ct2.eDep > 1.e-6) ) {
278 float t1 = ct.tick;
float t2=ct2.tick;
283 if (ct2.auxDetID<6) iSL=ct2.tick;
284 if (ct2.auxDetID>5 && ct2.auxDetID<16) iEL=ct2.tick;
285 if (ct2.auxDetID>15 && ct2.auxDetID<22) iNL=ct2.tick;
286 if (ct2.auxDetID>21 && ct2.auxDetID<28) iNU=ct2.tick;
287 if (ct2.auxDetID>27 && ct2.auxDetID<38) iWU=ct2.tick;
288 if (ct2.auxDetID>37 && ct2.auxDetID<44) iSU=ct2.tick;
289 if (ct2.auxDetID>43 && ct2.auxDetID<57) iCL=ct2.tick;
290 if (ct2.auxDetID>66 && ct2.auxDetID<83) iRM=ct2.tick;
295 float ttime;
int trigtick;
297 if (iRM>0 && iCL>0) { ttime=0.5*(iRM+iCL)+0.5; trigtick=
int(ttime);
298 if (trigmap[trigtick]==0) {trigmap[trigtick]++;trigmap[trigtick+1]++;
299 trigmap[trigtick+2]++;trigmap[trigtick-1]++;trigmap[trigtick-2]++;
305 if (iEL>0 && iWU>0) { ttime=0.5*(iEL+iWU)+0.5; trigtick=
int(ttime);
306 if (trigmap[trigtick]==0) {trigmap[trigtick]++;trigmap[trigtick+1]++;
307 trigmap[trigtick+2]++;trigmap[trigtick-1]++;trigmap[trigtick-2]++;
313 if (iNU>0 && iSL>0) { ttime=0.5*(iNU+iSL)+0.5; trigtick=
int(ttime);
314 if (trigmap[trigtick]==0) {trigmap[trigtick]++;trigmap[trigtick+1]++;
315 trigmap[trigtick+2]++;trigmap[trigtick-1]++;trigmap[trigtick-2]++;
321 if (iSU>0 && iNL>0) { ttime=0.5*(iSU+iNL)+0.5; trigtick=
int(ttime);
322 if (trigmap[trigtick]==0) {trigmap[trigtick]++;trigmap[trigtick+1]++;
323 trigmap[trigtick+2]++;trigmap[trigtick-1]++;trigmap[trigtick-2]++;
338 std::ostringstream out;
346 (ct.auxDetID >= 92 && ct.eDep > 1.e-6) )
347 out <<
"AuxDet " << ct.auxDetID <<
" had " << ct.numHits <<
" hits at readout tick " << ct.tick <<
". Total eDep = " << ct.eDep <<
" MeV.\n";
349 if (skippedHitsIneff) out << skippedHitsIneff <<
" hits were skipped due to counter inefficiency.\n";
350 if (skippedHitsOutRange) out << skippedHitsOutRange <<
" hits were skipped for being out of TPC window range.\n";
unsigned int fCombinedTimeDelay
MaybeLogger_< ELseverityLevel::ELsev_info, false > LogInfo
std::vector< chanTick > tickv
double fBSUTriggerThreshold
Collection of particles crossing one auxiliary detector cell.
double fTSUTriggerThreshold
uint32_t AuxDetID() const
std::string fLArG4ModuleLabel
std::vector< sim::AuxDetIDE > const & AuxDetIDEs() const
SubRunNumber_t subRun() const
double fClockSpeedCounter
double fTriggerEfficiency
EventNumber_t event() const
std::size_t getView(std::string const &moduleLabel, std::string const &productInstanceName, std::string const &processName, std::vector< ELEMENT const * > &result) const
ProductID put(std::unique_ptr< PROD > &&edp, FullSemantic< Level::Run > const semantic)