ATLAS Offline Software
Loading...
Searching...
No Matches
TRT_FastRDOAnalysis.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3*/
4
5
8
9#include "TTree.h"
10#include "TString.h"
11
12#include <algorithm>
13#include <math.h>
14#include <functional>
15#include <iostream>
16
17TRT_FastRDOAnalysis::TRT_FastRDOAnalysis(const std::string& name, ISvcLocator* pSvcLocator)
18 : AthAlgorithm(name, pSvcLocator)
19 , m_inputKey("TRT_DriftCircles")
20 , m_word(0)
22 , m_trailEdge(0)
23 , m_highLevel(0)
24 , m_firstBin(0)
25 , m_lastBin(0)
29 , m_noise(0)
30 , m_brl_ec(0)
31 , m_trtID(0)
32 , m_surfType(0)
33 , m_bndsType(0)
34 , m_cntr_x(0)
35 , m_cntr_y(0)
36 , m_cntr_z(0)
37 , m_cntr_r(0)
38 , m_cntr_phi(0)
39 , m_norm_x(0)
40 , m_norm_y(0)
41 , m_norm_z(0)
42 , m_norm_r(0)
43 , m_norm_phi(0)
44 , m_strSurfType(0)
45 , m_strBndsType(0)
46 , m_strCntr_x(0)
47 , m_strCntr_y(0)
48 , m_strCntr_z(0)
49 , m_strCntr_r(0)
50 , m_strCntr_phi(0)
51 , m_strNorm_x(0)
52 , m_strNorm_y(0)
53 , m_strNorm_z(0)
54 , m_strNorm_r(0)
55 , m_strNorm_phi(0)
56 , m_strawN(0)
57 , m_strawL(0)
58 , m_strawD(0)
69
70 , m_h_word(0)
72 , m_h_trailEdge(0)
73 , m_h_highLevel(0)
74 , m_h_firstBin(0)
75 , m_h_lastBin(0)
79 , m_h_noise(0)
80 , m_h_brl_ec(0)
81 , m_h_trtID(0)
82 , m_h_surfType(0)
83 , m_h_bndsType(0)
84 , m_h_cntr_x(0)
85 , m_h_cntr_y(0)
86 , m_h_cntr_z(0)
87 , m_h_cntr_r(0)
88 , m_h_cntr_phi(0)
89 , m_h_norm_x(0)
90 , m_h_norm_y(0)
91 , m_h_norm_z(0)
92 , m_h_norm_r(0)
93 , m_h_norm_phi(0)
96 , m_h_strCntr_x(0)
97 , m_h_strCntr_y(0)
98 , m_h_strCntr_z(0)
99 , m_h_strCntr_r(0)
100 , m_h_strCntr_phi(0)
101 , m_h_strNorm_x(0)
102 , m_h_strNorm_y(0)
103 , m_h_strNorm_z(0)
104 , m_h_strNorm_r(0)
105 , m_h_strNorm_phi(0)
106 , m_h_strawN(0)
107 , m_h_strawL(0)
108 , m_h_strawD(0)
119
120 , m_tree(0)
121 , m_ntupleFileName("/ntuples/file1")
122 , m_ntupleDirName("/TRT_FastRDOAnalysis/")
123 , m_ntupleTreeName("/TRT_FastRDOAna")
124 , m_path("/TRT_FastRDOAnalysis/")
125 , m_thistSvc("THistSvc", name)
126{
127 declareProperty("InputKey", m_inputKey);
128 declareProperty("NtupleFileName", m_ntupleFileName);
129 declareProperty("NtupleDirectoryName", m_ntupleDirName);
130 declareProperty("NtupleTreeName", m_ntupleTreeName);
131 declareProperty("HistPath", m_path);
132}
133
135 ATH_MSG_DEBUG( "Initializing TRT_FastRDOAnalysis" );
136
137 // This will check that the properties were initialized
138 // properly by job configuration.
139 ATH_CHECK( m_inputKey.initialize() );
140
141 // Grab Ntuple and histogramming service for tree
142 ATH_CHECK(m_thistSvc.retrieve());
143
144 m_tree = new TTree(TString(m_ntupleTreeName), "TRT_FastRDOAna");
145 std::string fullNtupleName = m_ntupleFileName + m_ntupleDirName + m_ntupleTreeName;
146 ATH_CHECK(m_thistSvc->regTree(fullNtupleName, m_tree));
147 if (m_tree) {
148 // TREE BRANCHES
149 // TRT_DriftCircle
150 m_tree->Branch("word", &m_word);
151 m_tree->Branch("driftTimeBin", &m_driftTimeBin);
152 m_tree->Branch("trailEdge", &m_trailEdge);
153 m_tree->Branch("highLevel", &m_highLevel);
154 m_tree->Branch("firstBin", &m_firstBin);
155 m_tree->Branch("lastBin", &m_lastBin);
156 m_tree->Branch("timeOverThreshold", &m_timeOverThreshold);
157 m_tree->Branch("rawDriftTime", &m_rawDriftTime);
158 m_tree->Branch("driftTimeValid", &m_driftTimeValid);
159 m_tree->Branch("noise", &m_noise);
160 // TRT_BaseElement
161 m_tree->Branch("brl_ec", &m_brl_ec);
162 m_tree->Branch("trtID", &m_trtID);
163 m_tree->Branch("surfType", &m_surfType);
164 m_tree->Branch("bndsType", &m_bndsType);
165 m_tree->Branch("cntr_x", &m_cntr_x);
166 m_tree->Branch("cntr_y", &m_cntr_y);
167 m_tree->Branch("cntr_z", &m_cntr_z);
168 m_tree->Branch("cntr_r", &m_cntr_r);
169 m_tree->Branch("cntr_phi", &m_cntr_phi);
170 m_tree->Branch("norm_x", &m_norm_x);
171 m_tree->Branch("norm_y", &m_norm_y);
172 m_tree->Branch("norm_z", &m_norm_z);
173 m_tree->Branch("norm_r", &m_norm_r);
174 m_tree->Branch("norm_phi", &m_norm_phi);
175 m_tree->Branch("strSurfType", &m_strSurfType);
176 m_tree->Branch("strBndsType", &m_strBndsType);
177 m_tree->Branch("strCntr_x", &m_strCntr_x);
178 m_tree->Branch("strCntr_y", &m_strCntr_y);
179 m_tree->Branch("strCntr_z", &m_strCntr_z);
180 m_tree->Branch("strCntr_r", &m_strCntr_r);
181 m_tree->Branch("strCntr_phi", &m_strCntr_phi);
182 m_tree->Branch("strNorm_x", &m_strNorm_x);
183 m_tree->Branch("strNorm_y", &m_strNorm_y);
184 m_tree->Branch("strNorm_z", &m_strNorm_z);
185 m_tree->Branch("strNorm_r", &m_strNorm_r);
186 m_tree->Branch("strNorm_phi", &m_strNorm_phi);
187 m_tree->Branch("strawN", &m_strawN);
188 m_tree->Branch("strawL", &m_strawL);
189 m_tree->Branch("strawD", &m_strawD);
190 m_tree->Branch("allStrCntr_x", &m_allStrCntr_x);
191 m_tree->Branch("allStrCntr_y", &m_allStrCntr_y);
192 m_tree->Branch("allStrCntr_z", &m_allStrCntr_z);
193 m_tree->Branch("allStrCntr_r", &m_allStrCntr_r);
194 m_tree->Branch("allStrCntr_phi", &m_allStrCntr_phi);
195 m_tree->Branch("allStrAxis_x", &m_allStrAxis_x);
196 m_tree->Branch("allStrAxis_y", &m_allStrAxis_y);
197 m_tree->Branch("allStrAxis_z", &m_allStrAxis_z);
198 m_tree->Branch("allStrAxis_r", &m_allStrAxis_r);
199 m_tree->Branch("allStrAxis_phi", &m_allStrAxis_phi);
200 }
201 else {
202 ATH_MSG_ERROR("No tree found!");
203 }
204
205 // HISTOGRAMS
206 m_h_word = new TH1F("h_word", "word", 100, 0, 7e7);
207 m_h_word->StatOverflows();
208 ATH_CHECK(m_thistSvc->regHist(m_path + m_h_word->GetName(), m_h_word));
209
210 m_h_driftTimeBin = new TH1F("h_driftTimeBin", "driftTimeBin", 100, 0, 12);
211 m_h_driftTimeBin->StatOverflows();
213
214 m_h_trailEdge = new TH1F("h_trailEdge", "trailEdge", 100, 0, 16);
215 m_h_trailEdge->StatOverflows();
216 ATH_CHECK(m_thistSvc->regHist(m_path + m_h_trailEdge->GetName(), m_h_trailEdge));
217
218 m_h_highLevel = new TH1F("h_highLevel", "highLevel", 100, 0, 2);
219 m_h_highLevel->StatOverflows();
220 ATH_CHECK(m_thistSvc->regHist(m_path + m_h_highLevel->GetName(), m_h_highLevel));
221
222 m_h_firstBin = new TH1F("h_firstBin", "firstBin", 100, 0, 2);
223 m_h_firstBin->StatOverflows();
224 ATH_CHECK(m_thistSvc->regHist(m_path + m_h_firstBin->GetName(), m_h_firstBin));
225
226 m_h_lastBin = new TH1F("h_lastBin", "lastBin", 100, 0, 2);
227 m_h_lastBin->StatOverflows();
228 ATH_CHECK(m_thistSvc->regHist(m_path + m_h_lastBin->GetName(), m_h_lastBin));
229
230 m_h_timeOverThreshold = new TH1F("h_timeOverThreshold", "timeOverThreshold", 100, 0, 255);
231 m_h_timeOverThreshold->StatOverflows();
233
234 m_h_rawDriftTime = new TH1F("h_rawDriftTime", "rawDriftTime", 100, 0, 35);
235 m_h_rawDriftTime->StatOverflows();
237
238 m_h_driftTimeValid = new TH1F("h_driftTimeValid", "driftTimeValid", 100, 0, 2);
239 m_h_driftTimeValid->StatOverflows();
241
242 m_h_noise = new TH1F("h_noise", "noise", 100, 0, 2);
243 m_h_noise->StatOverflows();
244 ATH_CHECK(m_thistSvc->regHist(m_path + m_h_noise->GetName(), m_h_noise));
245
246 m_h_brl_ec = new TH1F("h_brl_ec", "brl_ec", 100, 0, 2);
247 m_h_brl_ec->StatOverflows();
248 ATH_CHECK(m_thistSvc->regHist(m_path + m_h_brl_ec->GetName(), m_h_brl_ec));
249
250 m_h_trtID = new TH1F("h_trtID", "trtID", 100, 0, 2e18);
251 m_h_trtID->StatOverflows();
252 ATH_CHECK(m_thistSvc->regHist(m_path + m_h_trtID->GetName(), m_h_trtID));
253
254 m_h_surfType = new TH1F("h_surfType", "surfType", 100, 0, 7);
255 m_h_surfType->StatOverflows();
256 ATH_CHECK(m_thistSvc->regHist(m_path + m_h_surfType->GetName(), m_h_surfType));
257
258 m_h_bndsType = new TH1F("h_bndsType", "bndsType", 100, 0, 7);
259 m_h_bndsType->StatOverflows();
260 ATH_CHECK(m_thistSvc->regHist(m_path + m_h_bndsType->GetName(), m_h_bndsType));
261
262 m_h_cntr_x = new TH1F("h_cntr_x", "cntr_x", 100, -1250, 1250);
263 m_h_cntr_x->StatOverflows();
264 ATH_CHECK(m_thistSvc->regHist(m_path + m_h_cntr_x->GetName(), m_h_cntr_x));
265
266 m_h_cntr_y = new TH1F("h_cntr_y", "cntr_y", 100, -1250, 1250);
267 m_h_cntr_y->StatOverflows();
268 ATH_CHECK(m_thistSvc->regHist(m_path + m_h_cntr_y->GetName(), m_h_cntr_y));
269
270 m_h_cntr_z = new TH1F("h_cntr_z", "cntr_z", 100, -3000, 3000);
271 m_h_cntr_z->StatOverflows();
272 ATH_CHECK(m_thistSvc->regHist(m_path + m_h_cntr_z->GetName(), m_h_cntr_z));
273
274 m_h_cntr_r = new TH1F("h_cntr_r", "cntr_r", 100, 0, 1250);
275 m_h_cntr_r->StatOverflows();
276 ATH_CHECK(m_thistSvc->regHist(m_path + m_h_cntr_r->GetName(), m_h_cntr_r));
277
278 m_h_cntr_phi = new TH1F("h_cntr_phi", "cntr_phi", 100, -3.5, 3.5);
279 m_h_cntr_phi->StatOverflows();
280 ATH_CHECK(m_thistSvc->regHist(m_path + m_h_cntr_phi->GetName(), m_h_cntr_phi));
281
282 m_h_norm_x = new TH1F("h_norm_x", "norm_x", 100, -1.25, 1.25);
283 m_h_norm_x->StatOverflows();
284 ATH_CHECK(m_thistSvc->regHist(m_path + m_h_norm_x->GetName(), m_h_norm_x));
285
286 m_h_norm_y = new TH1F("h_norm_y", "norm_y", 100, -1.25, 1.25);
287 m_h_norm_y->StatOverflows();
288 ATH_CHECK(m_thistSvc->regHist(m_path + m_h_norm_y->GetName(), m_h_norm_y));
289
290 m_h_norm_z = new TH1F("h_norm_z", "norm_z", 100, -1, 1);
291 m_h_norm_z->StatOverflows();
292 ATH_CHECK(m_thistSvc->regHist(m_path + m_h_norm_z->GetName(), m_h_norm_z));
293
294 m_h_norm_r = new TH1F("h_norm_r", "norm_r", 100, 0, 1);
295 m_h_norm_r->StatOverflows();
296 ATH_CHECK(m_thistSvc->regHist(m_path + m_h_norm_r->GetName(), m_h_norm_r));
297
298 m_h_norm_phi = new TH1F("h_norm_phi", "norm_phi", 100, -3.5, 3.5);
299 m_h_norm_phi->StatOverflows();
300 ATH_CHECK(m_thistSvc->regHist(m_path + m_h_norm_phi->GetName(), m_h_norm_phi));
301
302 m_h_strSurfType = new TH1F("h_strSurfType", "strSurfType", 100, 0, 7);
303 m_h_strSurfType->StatOverflows();
305
306 m_h_strBndsType = new TH1F("h_strBndsType", "strBndsType", 100, 0, 7);
307 m_h_strBndsType->StatOverflows();
309
310 m_h_strCntr_x = new TH1F("h_strCntr_x", "strCntr_x", 100, -1250, 1250);
311 m_h_strCntr_x->StatOverflows();
312 ATH_CHECK(m_thistSvc->regHist(m_path + m_h_strCntr_x->GetName(), m_h_strCntr_x));
313
314 m_h_strCntr_y = new TH1F("h_strCntr_y", "strCntr_y", 100, -1250, 1250);
315 m_h_strCntr_y->StatOverflows();
316 ATH_CHECK(m_thistSvc->regHist(m_path + m_h_strCntr_y->GetName(), m_h_strCntr_y));
317
318 m_h_strCntr_z = new TH1F("h_strCntr_z", "strCntr_z", 100, -3000, 3000);
319 m_h_strCntr_z->StatOverflows();
320 ATH_CHECK(m_thistSvc->regHist(m_path + m_h_strCntr_z->GetName(), m_h_strCntr_z));
321
322 m_h_strCntr_r = new TH1F("h_strCntr_r", "strCntr_r", 100, 0, 1250);
323 m_h_strCntr_r->StatOverflows();
324 ATH_CHECK(m_thistSvc->regHist(m_path + m_h_strCntr_r->GetName(), m_h_strCntr_r));
325
326 m_h_strCntr_phi = new TH1F("h_strCntr_phi", "strCntr_phi", 100, -3.5, 3.5);
327 m_h_strCntr_phi->StatOverflows();
329
330 m_h_strNorm_x = new TH1F("h_strNorm_x", "strNorm_x", 100, -1.25, 1.25);
331 m_h_strNorm_x->StatOverflows();
332 ATH_CHECK(m_thistSvc->regHist(m_path + m_h_strNorm_x->GetName(), m_h_strNorm_x));
333
334 m_h_strNorm_y = new TH1F("h_strNorm_y", "strNorm_y", 100, -1.25, 1.25);
335 m_h_strNorm_y->StatOverflows();
336 ATH_CHECK(m_thistSvc->regHist(m_path + m_h_strNorm_y->GetName(), m_h_strNorm_y));
337
338 m_h_strNorm_z = new TH1F("h_strNorm_z", "strNorm_z", 100, -1, 1);
339 m_h_strNorm_z->StatOverflows();
340 ATH_CHECK(m_thistSvc->regHist(m_path + m_h_strNorm_z->GetName(), m_h_strNorm_z));
341
342 m_h_strNorm_r = new TH1F("h_strNorm_r", "strNorm_r", 100, 0, 1);
343 m_h_strNorm_r->StatOverflows();
344 ATH_CHECK(m_thistSvc->regHist(m_path + m_h_strNorm_r->GetName(), m_h_strNorm_r));
345
346 m_h_strNorm_phi = new TH1F("h_strNorm_phi", "strNorm_phi", 100, -3.5, 3.5);
347 m_h_strNorm_phi->StatOverflows();
349
350 m_h_strawN = new TH1F("h_strawN", "strawN", 100, 0, 30);
351 m_h_strawN->StatOverflows();
352 ATH_CHECK(m_thistSvc->regHist(m_path + m_h_strawN->GetName(), m_h_strawN));
353
354 m_h_strawL = new TH1F("h_strawL", "strawL", 100, 0, 750);
355 m_h_strawL->StatOverflows();
356 ATH_CHECK(m_thistSvc->regHist(m_path + m_h_strawL->GetName(), m_h_strawL));
357
358 m_h_strawD = new TH1F("h_strawD", "strawD", 100, -2, 2);
359 m_h_strawD->StatOverflows();
360 ATH_CHECK(m_thistSvc->regHist(m_path + m_h_strawD->GetName(), m_h_strawD));
361
362 m_h_allStrCntr_x = new TH1F("h_allStrCntr_x", "allStrCntr_x", 100, -1250, 1250);
363 m_h_allStrCntr_x->StatOverflows();
365
366 m_h_allStrCntr_y = new TH1F("h_allStrCntr_y", "allStrCntr_y", 100, -1250, 1250);
367 m_h_allStrCntr_y->StatOverflows();
369
370 m_h_allStrCntr_z = new TH1F("h_allStrCntr_z", "allStrCntr_z", 100, -3000, 3000);
371 m_h_allStrCntr_z->StatOverflows();
373
374 m_h_allStrCntr_r = new TH1F("h_allStrCntr_r", "allStrCntr_r", 100, 0, 1250);
375 m_h_allStrCntr_r->StatOverflows();
377
378 m_h_allStrCntr_phi = new TH1F("h_allStrCntr_phi", "allStrCntr_phi", 100, -3.5, 3.5);
379 m_h_allStrCntr_phi->StatOverflows();
381
382 m_h_allStrAxis_x = new TH1F("h_allStrAxis_x", "allStrAxis_x", 100, -1.25, 1.25);
383 m_h_allStrAxis_x->StatOverflows();
385
386 m_h_allStrAxis_y = new TH1F("h_allStrAxis_y", "allStrAxis_y", 100, -1.25, 1.25);
387 m_h_allStrAxis_y->StatOverflows();
389
390 m_h_allStrAxis_z = new TH1F("h_allStrAxis_z", "allStrAxis_z", 100, -1, 1);
391 m_h_allStrAxis_z->StatOverflows();
393
394 m_h_allStrAxis_r = new TH1F("h_allStrAxis_r", "allStrAxis_r", 100, 0, 1);
395 m_h_allStrAxis_r->StatOverflows();
397
398 m_h_allStrAxis_phi = new TH1F("h_allStrAxis_phi", "allStrAxis_phi", 100, -3.5, 3.5);
399 m_h_allStrAxis_phi->StatOverflows();
401
402 return StatusCode::SUCCESS;
403}
404
406 ATH_MSG_DEBUG( "In TRT_FastRDOAnalysis::execute()" );
407
408 // clear branches
409 m_word->clear();
410 m_driftTimeBin->clear();
411 m_highLevel->clear();
412 m_firstBin->clear();
413 m_lastBin->clear();
414 m_timeOverThreshold->clear();
415 m_rawDriftTime->clear();
416 m_driftTimeValid->clear();
417 m_noise->clear();
418
419 m_brl_ec->clear();
420 m_trtID->clear();
421 m_surfType->clear();
422 m_bndsType->clear();
423 m_cntr_x->clear();
424 m_cntr_y->clear();
425 m_cntr_z->clear();
426 m_cntr_r->clear();
427 m_cntr_phi->clear();
428 m_norm_x->clear();
429 m_norm_y->clear();
430 m_norm_z->clear();
431 m_norm_r->clear();
432 m_norm_phi->clear();
433 m_strSurfType->clear();
434 m_strBndsType->clear();
435 m_strCntr_x->clear();
436 m_strCntr_y->clear();
437 m_strCntr_z->clear();
438 m_strCntr_r->clear();
439 m_strCntr_phi->clear();
440 m_strNorm_x->clear();
441 m_strNorm_y->clear();
442 m_strNorm_z->clear();
443 m_strNorm_r->clear();
444 m_strNorm_phi->clear();
445 m_strawN->clear();
446 m_strawL->clear();
447 m_strawD->clear();
448 m_allStrCntr_x->clear();
449 m_allStrCntr_y->clear();
450 m_allStrCntr_z->clear();
451 m_allStrCntr_r->clear();
452 m_allStrCntr_phi->clear();
453 m_allStrAxis_x->clear();
454 m_allStrAxis_y->clear();
455 m_allStrAxis_z->clear();
456 m_allStrAxis_r->clear();
457 m_allStrAxis_phi->clear();
458
459 // get containers -- fill branches + histos
461 if(p_trtDC_cont.isValid()) {
462 // loop over cluster container
463 InDet::TRT_DriftCircleContainer::const_iterator trtDCcont_itr(p_trtDC_cont->begin());
464 const InDet::TRT_DriftCircleContainer::const_iterator trtDCcont_end(p_trtDC_cont->end());
465 for ( ; trtDCcont_itr != trtDCcont_end; ++trtDCcont_itr ) {
466 const InDet::TRT_DriftCircleCollection* p_trtDC_coll(*trtDCcont_itr);
467 InDet::TRT_DriftCircleCollection::const_iterator trtDC_itr(p_trtDC_coll->begin());
468 const InDet::TRT_DriftCircleCollection::const_iterator trtDC_end(p_trtDC_coll->end());
469 for ( ; trtDC_itr != trtDC_end; ++trtDC_itr ) {
470 // TRT_DriftCircle
471 const unsigned int word((*trtDC_itr)->getWord());
472 const int driftTimeBin((*trtDC_itr)->driftTimeBin());
473 const int trailEdge((*trtDC_itr)->trailingEdge());
474 const bool HL((*trtDC_itr)->highLevel());
475 const bool firstBin((*trtDC_itr)->firstBinHigh());
476 const bool lastBin((*trtDC_itr)->lastBinHigh());
477 const double ToT((*trtDC_itr)->timeOverThreshold());
478 const double rawDriftTime((*trtDC_itr)->rawDriftTime());
479 const bool driftTimeValid((*trtDC_itr)->driftTimeValid());
480 const bool noise((*trtDC_itr)->isNoise());
481
482 m_word->push_back(word);
483 m_driftTimeBin->push_back(driftTimeBin);
484 m_trailEdge->push_back(trailEdge);
485 m_highLevel->push_back(HL);
486 m_firstBin->push_back(firstBin);
487 m_lastBin->push_back(lastBin);
488 m_timeOverThreshold->push_back(ToT);
489 m_rawDriftTime->push_back(rawDriftTime);
490 m_driftTimeValid->push_back(driftTimeValid);
491 m_noise->push_back(noise);
492
493 m_h_word->Fill(word);
495 m_h_trailEdge->Fill(trailEdge);
496 m_h_highLevel->Fill(HL);
497 m_h_firstBin->Fill(firstBin);
498 m_h_lastBin->Fill(lastBin);
499 m_h_timeOverThreshold->Fill(ToT);
501 m_h_driftTimeValid->Fill(driftTimeValid);
502 m_h_noise->Fill(noise);
503
504 // ---------------
505 // TRT_BaseElement
506 // ---------------
507 const InDetDD::TRT_BaseElement* detElement((*trtDC_itr)->detectorElement());
508 // type info --> BARREL or ENDCAP
509 const int brl_ec((*detElement).type());
510 const Identifier trtID((*detElement).identify());
511 const unsigned long long trtID_int = trtID.get_compact();
512
513 // Surface & Tracking info
514 // -- element surface (straw layer)
515 const Trk::Surface& surf((*detElement).surface());
516 const int surfType(static_cast<int>(surf.type()));
517
518 const Trk::SurfaceBounds& bnds((*detElement).bounds());
519 const int bndsType(bnds.type());
520
521 const Amg::Vector3D& cntr((*detElement).center());
522 const float cntr_x(cntr.x());
523 const float cntr_y(cntr.y());
524 const float cntr_z(cntr.z());
525 const float cntr_r(cntr.perp());
526 const float cntr_phi(cntr.phi());
527
528 const Amg::Vector3D& norm((*detElement).normal());
529 const float norm_x(norm.x());
530 const float norm_y(norm.y());
531 const float norm_z(norm.z());
532 const float norm_r(norm.perp());
533 const float norm_phi(norm.phi());
534
535 // -- straw surface (first straw in layer?)
536 const Trk::Surface& strSurf((*detElement).surface(trtID));
537 const int strSurfType(static_cast<int>(strSurf.type()));
538
539 const Trk::SurfaceBounds& strBnds((*detElement).bounds(trtID));
540 const int strBndsType(strBnds.type());
541
542 const Amg::Vector3D& strCntr((*detElement).center(trtID));
543 const float strCntr_x(strCntr.x());
544 const float strCntr_y(strCntr.y());
545 const float strCntr_z(strCntr.z());
546 const float strCntr_r(strCntr.perp());
547 const float strCntr_phi(strCntr.phi());
548
549 const Amg::Vector3D& strNorm((*detElement).normal(trtID));
550 const float strNorm_x(strNorm.x());
551 const float strNorm_y(strNorm.y());
552 const float strNorm_z(strNorm.z());
553 const float strNorm_r(strNorm.perp());
554 const float strNorm_phi(strNorm.phi());
555
556 const unsigned int strawN((*detElement).nStraws());
557 const double& strawL((*detElement).strawLength());
558 const int strawD((*detElement).strawDirection());
559
560 // all straws in layer
561 for (unsigned int i = 0; i != strawN; ++i) {
562 const Amg::Vector3D& strawCenter((*detElement).strawCenter(i));
563 const float strawCenter_x(strawCenter.x());
564 const float strawCenter_y(strawCenter.y());
565 const float strawCenter_z(strawCenter.z());
566 const float strawCenter_r(strawCenter.perp());
567 const float strawCenter_phi(strawCenter.phi());
568
569 const Amg::Vector3D& strawAxis((*detElement).strawAxis(i));
570 const float strawAxis_x(strawAxis.x());
571 const float strawAxis_y(strawAxis.y());
572 const float strawAxis_z(strawAxis.z());
573 const float strawAxis_r(strawAxis.perp());
574 const float strawAxis_phi(strawAxis.phi());
575
576 m_allStrCntr_x->push_back(strawCenter_x);
577 m_allStrCntr_y->push_back(strawCenter_y);
578 m_allStrCntr_z->push_back(strawCenter_z);
579 m_allStrCntr_r->push_back(strawCenter_r);
580 m_allStrCntr_phi->push_back(strawCenter_phi);
581
582 m_allStrAxis_x->push_back(strawAxis_x);
583 m_allStrAxis_y->push_back(strawAxis_y);
584 m_allStrAxis_z->push_back(strawAxis_z);
585 m_allStrAxis_r->push_back(strawAxis_r);
586 m_allStrAxis_phi->push_back(strawAxis_phi);
587
588 m_h_allStrCntr_x->Fill(strawCenter_x);
589 m_h_allStrCntr_y->Fill(strawCenter_y);
590 m_h_allStrCntr_z->Fill(strawCenter_z);
591 m_h_allStrCntr_r->Fill(strawCenter_r);
592 m_h_allStrCntr_phi->Fill(strawCenter_phi);
593
594 m_h_allStrAxis_x->Fill(strawAxis_x);
595 m_h_allStrAxis_y->Fill(strawAxis_y);
596 m_h_allStrAxis_z->Fill(strawAxis_z);
597 m_h_allStrAxis_r->Fill(strawAxis_r);
598 m_h_allStrAxis_phi->Fill(strawAxis_phi);
599 }
600
601 m_brl_ec->push_back(brl_ec);
602 m_trtID->push_back(trtID_int);
603 m_surfType->push_back(surfType);
604 m_bndsType->push_back(bndsType);
605 m_cntr_x->push_back(cntr_x);
606 m_cntr_y->push_back(cntr_y);
607 m_cntr_z->push_back(cntr_z);
608 m_cntr_r->push_back(cntr_r);
609 m_cntr_phi->push_back(cntr_phi);
610 m_norm_x->push_back(norm_x);
611 m_norm_y->push_back(norm_y);
612 m_norm_z->push_back(norm_z);
613 m_norm_r->push_back(norm_r);
614 m_norm_phi->push_back(norm_phi);
615 m_strSurfType->push_back(strSurfType);
616 m_strBndsType->push_back(strBndsType);
617 m_strCntr_x->push_back(strCntr_x);
618 m_strCntr_y->push_back(strCntr_y);
619 m_strCntr_z->push_back(strCntr_z);
620 m_strCntr_r->push_back(strCntr_r);
621 m_strCntr_phi->push_back(strCntr_phi);
622 m_strNorm_x->push_back(strNorm_x);
623 m_strNorm_y->push_back(strNorm_y);
624 m_strNorm_z->push_back(strNorm_z);
625 m_strNorm_r->push_back(strNorm_r);
626 m_strNorm_phi->push_back(strNorm_phi);
627 m_strawN->push_back(strawN);
628 m_strawL->push_back(strawL);
629 m_strawD->push_back(strawD);
630
631 m_h_brl_ec->Fill(brl_ec);
632 m_h_trtID->Fill(trtID_int);
633 m_h_surfType->Fill(surfType);
634 m_h_bndsType->Fill(bndsType);
635 m_h_cntr_x->Fill(cntr_x);
636 m_h_cntr_y->Fill(cntr_y);
637 m_h_cntr_z->Fill(cntr_z);
638 m_h_cntr_r->Fill(cntr_r);
639 m_h_cntr_phi->Fill(cntr_phi);
640 m_h_norm_x->Fill(norm_x);
641 m_h_norm_y->Fill(norm_y);
642 m_h_norm_z->Fill(norm_z);
643 m_h_norm_r->Fill(norm_r);
644 m_h_norm_phi->Fill(norm_phi);
645 m_h_strSurfType->Fill(strSurfType);
646 m_h_strBndsType->Fill(strBndsType);
647 m_h_strCntr_x->Fill(strCntr_x);
648 m_h_strCntr_y->Fill(strCntr_y);
649 m_h_strCntr_z->Fill(strCntr_z);
650 m_h_strCntr_r->Fill(strCntr_r);
651 m_h_strCntr_phi->Fill(strCntr_phi);
652 m_h_strNorm_x->Fill(strNorm_x);
653 m_h_strNorm_y->Fill(strNorm_y);
654 m_h_strNorm_z->Fill(strNorm_z);
655 m_h_strNorm_r->Fill(strNorm_r);
656 m_h_strNorm_phi->Fill(strNorm_phi);
657 m_h_strawN->Fill(strawN);
658 m_h_strawL->Fill(strawL);
659 m_h_strawD->Fill(strawD);
660
661 }
662 }
663 }
664
665 if (m_tree) {
666 m_tree->Fill();
667 }
668
669 return StatusCode::SUCCESS;
670}
671
673 return StatusCode::SUCCESS;
674}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_DEBUG(x)
double norm_phi(const double input)
Handle class for reading from StoreGate.
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
value_type get_compact() const
Get the compact id.
Virtual base class of TRT readout elements.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
std::vector< float > * m_cntr_x
std::vector< float > * m_allStrCntr_z
std::vector< float > * m_strNorm_y
std::vector< float > * m_cntr_z
std::vector< double > * m_strawD
std::vector< unsigned long long > * m_trtID
std::vector< bool > * m_driftTimeValid
std::vector< float > * m_strNorm_z
std::vector< double > * m_strawL
std::vector< float > * m_allStrCntr_phi
TRT_FastRDOAnalysis(const std::string &name, ISvcLocator *pSvcLocator)
std::vector< float > * m_norm_x
std::vector< int > * m_bndsType
std::vector< float > * m_cntr_phi
std::vector< float > * m_strCntr_y
std::vector< float > * m_strCntr_z
std::vector< double > * m_rawDriftTime
std::vector< int > * m_driftTimeBin
std::vector< float > * m_allStrCntr_r
virtual StatusCode finalize() override final
std::vector< float > * m_norm_z
std::vector< int > * m_strSurfType
std::vector< float > * m_allStrAxis_r
std::vector< float > * m_strCntr_r
virtual StatusCode execute() override final
std::vector< float > * m_cntr_r
std::vector< float > * m_strNorm_r
std::vector< float > * m_allStrCntr_x
std::vector< bool > * m_noise
std::vector< float > * m_strNorm_x
SG::ReadHandleKey< InDet::TRT_DriftCircleContainer > m_inputKey
std::vector< float > * m_allStrAxis_y
std::vector< int > * m_surfType
std::vector< float > * m_norm_phi
std::vector< double > * m_timeOverThreshold
std::vector< bool > * m_firstBin
std::vector< float > * m_norm_y
std::vector< float > * m_allStrAxis_z
std::vector< bool > * m_highLevel
std::vector< int > * m_strawN
std::vector< int > * m_brl_ec
std::vector< bool > * m_lastBin
std::vector< float > * m_allStrCntr_y
std::vector< float > * m_norm_r
std::vector< int > * m_trailEdge
std::vector< float > * m_strNorm_phi
virtual StatusCode initialize() override final
ServiceHandle< ITHistSvc > m_thistSvc
std::vector< float > * m_allStrAxis_phi
std::vector< float > * m_strCntr_x
std::vector< unsigned int > * m_word
std::vector< int > * m_strBndsType
std::vector< float > * m_strCntr_phi
std::vector< float > * m_allStrAxis_x
std::vector< float > * m_cntr_y
Abstract base class for surface bounds to be specified.
virtual BoundsType type() const =0
Return the bounds type - for persistency optimization.
Abstract Base Class for tracking surfaces.
virtual constexpr SurfaceType type() const =0
Returns the Surface type to avoid dynamic casts.
int driftTimeBin(unsigned int m_word)
Definition driftCircle.h:50
double rawDriftTime(unsigned int m_word)
Eigen::Matrix< double, 3, 1 > Vector3D