ATLAS Offline Software
TBTrackInfoFromTag.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 
6 #include "TBTrackInfoFromTag.h"
7 
8 
9 // template functions for copying the contents of a 1- and 2-dim array into a vector
10 template <class type1, class type2> void copyArrToVec_1d(unsigned int size, type1 arr, type2 *vec)
11 {
12  (*vec).clear();
13  std::copy ( arr, arr+size, std::back_inserter(*vec) );
14  return;
15 }
16 
17 template <class type1, class type2> void copyArrToVec_2d(unsigned int size1, unsigned int size2, type1 arr, type2 *vec)
18 {
19  (*vec).clear();
20  (*vec).resize(size1);
21  for(unsigned int cntr=0; cntr<size1; cntr++ )
22  copyArrToVec_1d( size2,arr[cntr],&((*vec)[cntr]) );
23 
24  return;
25 }
26 
27 
28 
29 TBTrackInfoFromTag::TBTrackInfoFromTag(const std::string& name, ISvcLocator* pSvcLocator): AthAlgorithm(name,pSvcLocator)
30  {
31  // job options
32  declareProperty("SGrecordkey", m_SGrecordkey="TBTrackReducedInfo");
33  declareProperty("EventInfoSGKey", m_SGkey1="ByteStreamEventInfo");
34  declareProperty("InputRootFile", m_inputRootFileName="./cbnt_RecExTB_Combined.root");
35 
36  rootFile1 = 0;
37  rootFile2 = 0;
38  tbTree = 0;
39  tileRecTree = 0;
40 
41  m_max_nPixelHits = 0;
42  m_max_nSctHits = 0;
44  m_max1_Trt_HLTRT = 0;
45  m_max2_Trt_HLTRT = 0;
46  m_max_btdc1 = 0;
47  m_max_GainC = 0;
48  m_max_MuBack = 0;
49  m_max_TfitC = 0;
50  m_max_EfitC = 0;
51  m_max_Chi2C = 0;
52  m_max1_SampleC = 0;
53  m_max2_SampleC = 0;
54  }
55 
57 { }
58 
61 {
63  // Allocate Services //
65 
66  // initialize variables which store the max lenghts of the arrays
67  // from the input root file to be read by the TBTrackInfoFromTag package
69 
70  m_max1_Trt_HLTRT = 60;
71  m_max2_Trt_HLTRT = 100;
72 
73  m_max_btdc1 = 16;
74  m_max_GainC = 48;
75 
76  m_max_MuBack = 14;
78 
79  m_max1_SampleC = 48;
80  m_max2_SampleC = 9;
81 
82  // input root trees
83  TTree * tree;
84 
85  ATH_MSG_DEBUG("Reading in file " << m_inputRootFileName << " ...");
86 
87  ATH_MSG_DEBUG("\t- Getting TileRec_h1000 tree ");
88  rootFile1 = new TFile((TString)m_inputRootFileName);
89  rootFile1->cd((TString)m_inputRootFileName + ":/TileRec");
90  tree = (TTree*)gDirectory->Get("h1000");
92 
93  ATH_MSG_DEBUG("\t- Getting TB_tree tree ");
94  rootFile2 = new TFile((TString)m_inputRootFileName);
95  rootFile2->cd((TString)m_inputRootFileName + ":/TB");
96  tree = (TTree*)gDirectory->Get("tree");
97  tbTree = new TB_tree(tree);
98 
99  return StatusCode::SUCCESS;
100 }
101 
104 {
105  ATH_MSG_DEBUG("Executing TBTrackInfoFromTag...");
106  const EventContext& ctx = Gaudi::Hive::currentContext();
107 
108  int runNumber = ctx.eventID().run_number();
109  uint64_t evtNumber = ctx.eventID().event_number();
110 
111  ATH_MSG_DEBUG("Run/Event numbers:\t " << runNumber << " / " << evtNumber);
112 
113 /*
114  int returnFlag = 0;
115  int evtFindFlag1, evtFindFlag2;
116  evtFindFlag1 = tileRecTree->Loop(evtNumber);
117  evtFindFlag2 = tbTree->Loop(evtNumber);
118 
119  if(evtFindFlag1 < 0) {
120  ATH_MSG_DEBUG("There is no event number " << evtNumber << " in tileRecTree");
121  returnFlag = 1;
122  }
123  if(evtFindFlag2 < 0) {
124  ATH_MSG_DEBUG("There is no event number " << evtNumber << " in tbTree");
125  returnFlag = 1;
126  }
127 
128  if(returnFlag == 1)
129  return sc;
130 
131  tileRecTree->fChain->GetEntry(evtFindFlag1);
132  tbTree->fChain->GetEntry(evtFindFlag1);
133 
134  ATH_MSG_DEBUG("EventNumber in EventInfo = " << evtNumber);
135  ATH_MSG_DEBUG("EventNumber in tbTree = " << tbTree->Event);
136  ATH_MSG_DEBUG("EventNumber in tileRecTree = " << tileRecTree->Evt);
137 */
138 
139 
140  int evtFindFlag = tileRecTree->Loop(evtNumber);
141  if(evtFindFlag < 0) {
142  ATH_MSG_DEBUG("There is no event number " << evtNumber << " in tileRecTree");
143  return StatusCode::SUCCESS;
144  }
145 
146  ATH_MSG_DEBUG("Get line number " << evtFindFlag << " from the trees");
147  tileRecTree->fChain->GetEntry(evtFindFlag);
148  tbTree->fChain->GetEntry(evtFindFlag);
149 
150  ATH_MSG_DEBUG("EventNumber in EventInfo = " << evtNumber);
151  ATH_MSG_DEBUG("EventNumber in tileRecTree = " << tileRecTree->Evt);
152  ATH_MSG_DEBUG("EventNumber in tbTree = " << tbTree->Event);
153 
154  TBTrackInfo * trckInfo = new TBTrackInfo();
155 
156  // variables from TB_tree
157  trckInfo->tb_Trigger = tbTree->Trigger;
158  trckInfo->tb_trk_nTracks = tbTree->trk_nTracks;
160 
161  trckInfo->tb_sADC_S1 = tbTree->sADC_S1;
162  trckInfo->tb_sADC_muHalo = tbTree->sADC_muHalo;
163  trckInfo->tb_sADC_muTag = tbTree->sADC_muTag;
164  trckInfo->tb_sADC_C2 = tbTree->sADC_C2;
165  trckInfo->tb_sADC_TRTSci = tbTree->sADC_TRTSci;
166 
170 
172 
173 /*
174  ATH_MSG_DEBUG("trk_nPixelHits:");
175  ATH_MSG_DEBUG("m_max_nPixelHits " << m_max_nPixelHits );
176  for(int i=0; i<60; i++){
177  ATH_MSG_DEBUG("\t- trckInfo->tb_trk_nPixelHits[i] " << i << " = "<< trckInfo->tb_trk_nPixelHits[i] );
178  ATH_MSG_DEBUG("\t- tbTree->trk_nSctHits[i] " << i << " = " << tbTree->trk_nSctHits[i] );
179  }
180 
181  ATH_MSG_DEBUG("2- tb_trk_Trt_HLTRT:");
182  ATH_MSG_DEBUG("m_max1_Trt_HLTRT , m_max2_Trt_HLTRT = " << m_max1_Trt_HLTRT << " , " << m_max2_Trt_HLTRT);
183  for(int i=0; i<60; i++){
184  ATH_MSG_DEBUG("\t- " << i << ": ");
185  for(int j=0; j<5; j++){
186  ATH_MSG_DEBUG("\t\t- tbTree->tb_trk_Trt_HLTRT[i][j] : " << j << " = " << tbTree->trk_Trt_HLTRT[i][j] );
187  ATH_MSG_DEBUG("\t\t- trckInfo->tb_trk_Trt_HLTRT[i][j] : " << j << " = " << trckInfo->tb_trk_Trt_HLTRT[i][j] );
188  ATH_MSG_DEBUG("");
189  }
190  }
191 
192 */
193 
194  // variables from TileRec_h1000
195  trckInfo->tileRec_XchN1 = tileRecTree->XchN1 ;
196  trckInfo->tileRec_XchN2 = tileRecTree->XchN2 ;
197  trckInfo->tileRec_Xcha0 = tileRecTree->Xcha0 ;
198  trckInfo->tileRec_Xcha1 = tileRecTree->Xcha1 ;
199 
201 
205 
207 
211 
215 
219 
223 
224 
225  ATH_CHECK( evtStore()->record(trckInfo,m_SGrecordkey) );
226  ATH_MSG_DEBUG("\t- Recording TBTrackInfo in StorGate with key = " << m_SGrecordkey);
227 
228 
229  return StatusCode::SUCCESS;
230 }
231 
232 
233 StatusCode
235 {
236 
238  // Re-Allocating Services //
240 
241  delete rootFile1;
242  delete rootFile2;
243  delete tileRecTree;
244  delete tbTree;
245 
246  return StatusCode::SUCCESS;
247 }
TBTrackInfo::tb_trk_nTracksTRT
int tb_trk_nTracksTRT
Definition: TBTrackInfo.h:31
TBTrackInfoFromTag::execute
virtual StatusCode execute() override
Definition: TBTrackInfoFromTag.cxx:103
TileRec_h1000::TfitC1
Float_t TfitC1[48]
Definition: TileRec_h1000.h:104
TileRec_h1000
Definition: TileRec_h1000.h:22
TBTrackInfo::tileRec_EfitC0
std::vector< float > tileRec_EfitC0
Definition: TBTrackInfo.h:60
TBTrackInfoFromTag::initialize
virtual StatusCode initialize() override
Definition: TBTrackInfoFromTag.cxx:60
TBTrackInfo::tileRec_TfitC1
std::vector< float > tileRec_TfitC1
Definition: TBTrackInfo.h:58
TileRec_h1000::Xcha0
Float_t Xcha0
Definition: TileRec_h1000.h:69
TBTrackInfo::tileRec_Xcha0
float tileRec_Xcha0
Definition: TBTrackInfo.h:48
TBTrackInfo::tb_trk_nTrtHitsTRT
std::vector< int > tb_trk_nTrtHitsTRT
Definition: TBTrackInfo.h:41
TileRec_h1000::EfitC2
Float_t EfitC2[48]
Definition: TileRec_h1000.h:118
TileRec_h1000::XchN1
Float_t XchN1
Definition: TileRec_h1000.h:67
TileRec_h1000::GainC2
Int_t GainC2[48]
Definition: TileRec_h1000.h:113
TB_tree::trk_nTrtHitsTRT
Int_t trk_nTrtHitsTRT[60]
Definition: TB_tree.h:691
TileRec_h1000::TfitC0
Float_t TfitC0[48]
Definition: TileRec_h1000.h:89
TB_tree::trk_nSctHits
Int_t trk_nSctHits[60]
Definition: TB_tree.h:450
TileRec_h1000::XchN2
Float_t XchN2
Definition: TileRec_h1000.h:65
TBTrackInfoFromTag::tileRecTree
TileRec_h1000 * tileRecTree
Definition: TBTrackInfoFromTag.h:80
TBTrackInfoFromTag::rootFile1
TFile * rootFile1
Definition: TBTrackInfoFromTag.h:79
TB_tree::sADC_S1
Float_t sADC_S1
Definition: TB_tree.h:56
AthCommonDataStore< AthCommonMsg< Algorithm > >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
Definition: AthCommonDataStore.h:145
TBTrackInfoFromTag::TBTrackInfoFromTag
TBTrackInfoFromTag(const std::string &name, ISvcLocator *pSvcLocator)
Definition: TBTrackInfoFromTag.cxx:29
TBTrackInfo::tileRec_GainC2
std::vector< int > tileRec_GainC2
Definition: TBTrackInfo.h:54
TBTrackInfoFromTag::m_max_nTrtHitsTRT
unsigned int m_max_nTrtHitsTRT
Definition: TBTrackInfoFromTag.h:73
TBTrackInfo::tileRec_GainC0
std::vector< int > tileRec_GainC0
Definition: TBTrackInfo.h:52
TB_tree::Trigger
Int_t Trigger
Definition: TB_tree.h:92
tree
TChain * tree
Definition: tile_monitor.h:30
TBTrackInfo::tb_trk_Trt_HLTRT
std::vector< std::vector< int > > tb_trk_Trt_HLTRT
Definition: TBTrackInfo.h:43
TileRec_h1000::fChain
TTree * fChain
Definition: TileRec_h1000.h:24
TileRec_h1000::btdc1
Int_t btdc1[16]
Definition: TileRec_h1000.h:63
TileRec_h1000::Chi2C2
Float_t Chi2C2[48]
Definition: TileRec_h1000.h:121
TBTrackInfoFromTag::tbTree
TB_tree * tbTree
Definition: TBTrackInfoFromTag.h:81
TBTrackInfo::tb_Trigger
int tb_Trigger
Definition: TBTrackInfo.h:29
TBTrackInfo::tb_trk_nTracks
int tb_trk_nTracks
Definition: TBTrackInfo.h:30
TBTrackInfoFromTag::m_SGkey1
std::string m_SGkey1
Definition: TBTrackInfoFromTag.h:70
vec
std::vector< size_t > vec
Definition: CombinationsGeneratorTest.cxx:12
TBTrackInfo::tb_sADC_TRTSci
float tb_sADC_TRTSci
Definition: TBTrackInfo.h:37
TB_tree::trk_Trt_HLTRT
Int_t trk_Trt_HLTRT[60][100]
Definition: TB_tree.h:701
TileRec_h1000::EfitC0
Float_t EfitC0[48]
Definition: TileRec_h1000.h:88
TBTrackInfo::tileRec_TfitC2
std::vector< float > tileRec_TfitC2
Definition: TBTrackInfo.h:59
TB_tree::sADC_muHalo
Float_t sADC_muHalo
Definition: TB_tree.h:72
TBTrackInfo::tb_sADC_S1
float tb_sADC_S1
Definition: TBTrackInfo.h:33
TileRec_h1000::GainC0
Int_t GainC0[48]
Definition: TileRec_h1000.h:83
TBTrackInfoFromTag::m_max_nPixelHits
unsigned int m_max_nPixelHits
Definition: TBTrackInfoFromTag.h:73
TBTrackInfo::tileRec_XchN2
float tileRec_XchN2
Definition: TBTrackInfo.h:47
TileRec_h1000::Xcha1
Float_t Xcha1
Definition: TileRec_h1000.h:71
python.setupRTTAlg.size
int size
Definition: setupRTTAlg.py:39
TBTrackInfoFromTag::m_max1_Trt_HLTRT
unsigned int m_max1_Trt_HLTRT
Definition: TBTrackInfoFromTag.h:74
AthCommonDataStore< AthCommonMsg< Algorithm > >::evtStore
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:85
TBTrackInfo::tb_sADC_C2
float tb_sADC_C2
Definition: TBTrackInfo.h:36
TBTrackInfoFromTag::m_max2_SampleC
unsigned int m_max2_SampleC
Definition: TBTrackInfoFromTag.h:77
TBTrackInfoFromTag::m_max_nSctHits
unsigned int m_max_nSctHits
Definition: TBTrackInfoFromTag.h:73
TB_tree::sADC_muTag
Float_t sADC_muTag
Definition: TB_tree.h:70
TB_tree::fChain
TTree * fChain
Definition: TB_tree.h:24
ParseInputs.gDirectory
gDirectory
Definition: Final2012/ParseInputs.py:133
TB_tree::trk_nTracksTRT
Int_t trk_nTracksTRT
Definition: TB_tree.h:663
TileRec_h1000::GainC1
Int_t GainC1[48]
Definition: TileRec_h1000.h:98
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
TBTrackInfo
Definition: TBTrackInfo.h:19
TBTrackInfoFromTag::m_inputRootFileName
std::string m_inputRootFileName
Definition: TBTrackInfoFromTag.h:71
TBTrackInfo::tileRec_Chi2C2
std::vector< float > tileRec_Chi2C2
Definition: TBTrackInfo.h:65
TBTrackInfoFromTag::m_max_Chi2C
unsigned int m_max_Chi2C
Definition: TBTrackInfoFromTag.h:76
TBTrackInfo::tileRec_Chi2C0
std::vector< float > tileRec_Chi2C0
Definition: TBTrackInfo.h:63
TBTrackInfoFromTag::m_max2_Trt_HLTRT
unsigned int m_max2_Trt_HLTRT
Definition: TBTrackInfoFromTag.h:74
xAOD::uint64_t
uint64_t
Definition: EventInfo_v1.cxx:123
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
TBTrackInfo::tileRec_SampleC0
std::vector< std::vector< int > > tileRec_SampleC0
Definition: TBTrackInfo.h:67
AthAlgorithm
Definition: AthAlgorithm.h:47
TBTrackInfoFromTag::m_SGrecordkey
std::string m_SGrecordkey
Definition: TBTrackInfoFromTag.h:70
TileRec_h1000::EfitC1
Float_t EfitC1[48]
Definition: TileRec_h1000.h:103
copyArrToVec_1d
void copyArrToVec_1d(unsigned int size, type1 arr, type2 *vec)
Definition: TBTrackInfoFromTag.cxx:10
TBTrackInfo::tileRec_SampleC2
std::vector< std::vector< int > > tileRec_SampleC2
Definition: TBTrackInfo.h:69
TBTrackInfo::tb_trk_nSctHits
std::vector< int > tb_trk_nSctHits
Definition: TBTrackInfo.h:40
TileRec_h1000::TfitC2
Float_t TfitC2[48]
Definition: TileRec_h1000.h:119
TBTrackInfo::tileRec_Xcha1
float tileRec_Xcha1
Definition: TBTrackInfo.h:49
TBTrackInfo::tb_sADC_muHalo
float tb_sADC_muHalo
Definition: TBTrackInfo.h:34
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
TileRec_h1000::Chi2C1
Float_t Chi2C1[48]
Definition: TileRec_h1000.h:106
TBTrackInfo::tileRec_XchN1
float tileRec_XchN1
Definition: TBTrackInfo.h:46
TBTrackInfo::tileRec_Chi2C1
std::vector< float > tileRec_Chi2C1
Definition: TBTrackInfo.h:64
TBTrackInfoFromTag::finalize
virtual StatusCode finalize() override
Definition: TBTrackInfoFromTag.cxx:234
TileRec_h1000::SampleC2
Int_t SampleC2[48][9]
Definition: TileRec_h1000.h:115
TBTrackInfo::tb_sADC_muTag
float tb_sADC_muTag
Definition: TBTrackInfo.h:35
TileRec_h1000::Chi2C0
Float_t Chi2C0[48]
Definition: TileRec_h1000.h:91
TBTrackInfoFromTag::m_max_MuBack
unsigned int m_max_MuBack
Definition: TBTrackInfoFromTag.h:76
TileRec_h1000::SampleC0
Int_t SampleC0[48][9]
Definition: TileRec_h1000.h:85
DeMoAtlasDataLoss.runNumber
string runNumber
Definition: DeMoAtlasDataLoss.py:64
TB_tree::Event
Int_t Event
Definition: TB_tree.h:29
TBTrackInfo::tileRec_SampleC1
std::vector< std::vector< int > > tileRec_SampleC1
Definition: TBTrackInfo.h:68
copyArrToVec_2d
void copyArrToVec_2d(unsigned int size1, unsigned int size2, type1 arr, type2 *vec)
Definition: TBTrackInfoFromTag.cxx:17
TBTrackInfo::tileRec_EfitC2
std::vector< float > tileRec_EfitC2
Definition: TBTrackInfo.h:62
TileRec_h1000::SampleC1
Int_t SampleC1[48][9]
Definition: TileRec_h1000.h:100
TBTrackInfo::tileRec_btdc1
std::vector< int > tileRec_btdc1
Definition: TBTrackInfo.h:51
TBTrackInfoFromTag::~TBTrackInfoFromTag
virtual ~TBTrackInfoFromTag()
Definition: TBTrackInfoFromTag.cxx:56
TB_tree::trk_nPixelHits
Int_t trk_nPixelHits[60]
Definition: TB_tree.h:436
TBTrackInfo::tb_trk_nPixelHits
std::vector< int > tb_trk_nPixelHits
Definition: TBTrackInfo.h:39
TBTrackInfoFromTag::rootFile2
TFile * rootFile2
Definition: TBTrackInfoFromTag.h:79
calibdata.copy
bool copy
Definition: calibdata.py:27
TB_tree::sADC_TRTSci
Float_t sADC_TRTSci
Definition: TB_tree.h:80
TBTrackInfoFromTag.h
TBTrackInfoFromTag::m_max_EfitC
unsigned int m_max_EfitC
Definition: TBTrackInfoFromTag.h:76
TileRec_h1000::MuBack
Float_t MuBack[14]
Definition: TileRec_h1000.h:39
TBTrackInfoFromTag::m_max_TfitC
unsigned int m_max_TfitC
Definition: TBTrackInfoFromTag.h:76
TileRec_h1000::Evt
Int_t Evt
Definition: TileRec_h1000.h:30
TBTrackInfoFromTag::m_max1_SampleC
unsigned int m_max1_SampleC
Definition: TBTrackInfoFromTag.h:77
TBTrackInfo::tileRec_MuBack
std::vector< float > tileRec_MuBack
Definition: TBTrackInfo.h:56
TB_tree
Definition: TB_tree.h:22
TBTrackInfo::tileRec_EfitC1
std::vector< float > tileRec_EfitC1
Definition: TBTrackInfo.h:61
TB_tree::trk_nTracks
Int_t trk_nTracks
Definition: TB_tree.h:435
TB_tree::sADC_C2
Float_t sADC_C2
Definition: TB_tree.h:68
TBTrackInfoFromTag::m_max_btdc1
unsigned int m_max_btdc1
Definition: TBTrackInfoFromTag.h:75
TileRec_h1000::Loop
virtual void Loop()
Definition: TileRec_h1000.cxx:387
TBTrackInfo::tileRec_TfitC0
std::vector< float > tileRec_TfitC0
Definition: TBTrackInfo.h:57
TBTrackInfo::tileRec_GainC1
std::vector< int > tileRec_GainC1
Definition: TBTrackInfo.h:53
TBTrackInfoFromTag::m_max_GainC
unsigned int m_max_GainC
Definition: TBTrackInfoFromTag.h:75