ATLAS Offline Software
AnalysisConfig_Ntuple.h
Go to the documentation of this file.
1 /* emacs: this is -*- c++ -*- */
12 #ifndef TrigInDetAnalysisExample_AnalysisConfig_Ntuple_H
13 #define TrigInDetAnalysisExample_AnalysisConfig_Ntuple_H
14 
18 
20 
23 
24 // #include "AthenaMonitoring/AthMonitorAlgorithm.h"
26 
27 #include "TTree.h"
28 #include "TFile.h"
29 
30 #define endmsg endmsg
31 
32 class AnalysisConfig_Ntuple : public T_AnalysisConfig<AthReentrantAlgorithm> {
33 
34 public:
35 
36  // Full constructor: test/reference/selection
37  // - analysisInstanceName: the name of the analysis chain being created
38  // - xxxChainName: the name of the chain to be used as test/reference/selection; must be "StoreGate" in case of direct access to SG containers
39  // - xxxType: the type of tracks to be retrieved from the test/reference/selection chain or container
40  // - xxxKey: the key for tracks to be retrieved from the test/reference/selection chain or container
41  // - all standard operations are performed in loops over 0=test 1=reference 2=selection
42 
43  AnalysisConfig_Ntuple(const std::vector<std::string>& chainNames, const std::string& outputFileName="TrkNtuple.root",
44  double tauEtCutOffline=0.0, int TruthPdgId = 0, bool _keepAllEvents=false, int parentTruthPdgId = 0) :
46  "", "", "",
47  "", "", "",
48  "", "", "",
49  0, 0, 0,
50  0,
51  0 ),
52  m_useBeamCondSvc(false),
53  m_event(0),
54  m_File(0),
55  m_Tree(0),
56  m_Dir(0),
57  m_doOffline(false),
58  m_doVertices(false),
59  m_doMuons(false),
60  m_doMuonsSP(false),
61  m_muonType(),
62  m_muonIsLRT(),
66  m_tauType(),
67  m_tauProngs(),
68  m_vertexType(),
69  m_doBjets(false),
70  m_hasTruthMap(false),
71  m_tauEtCutOffline(tauEtCutOffline),
72  m_TruthPdgId(TruthPdgId),
73  m_finalised(true),
74  m_printInfo(true),
75  m_ptmin(0),
76  m_parentTruthPdgId(parentTruthPdgId)
77  {
80 
81  this->keepAllEvents( _keepAllEvents );
82 
83  for ( unsigned i=0 ; i<chainNames.size() ; i++ ) {
84 
85  if ( chainNames[i].empty() ) continue;
86 
87  ChainString chain(chainNames[i]);
88 
89  std::string cs = chain.head();
90 
91  if ( cs=="Offline" ) m_doOffline = true;
92  else if ( cs=="Truth" ) m_mcTruth = true;
93  else if ( cs=="Vertex" ) {
94  m_vertexType.push_back(chain.tail());
95  m_doVertices = true;
96  }
97  else if ( cs=="MuonsSP" ) m_doMuonsSP = true;
98  else if ( cs=="Muons" ){
99  m_muonType.push_back(chain.tail());
100  if (chain.roi() == "LRT") m_muonIsLRT.push_back(true);
101  else m_muonIsLRT.push_back(false);
102  }
103  else if ( cs=="Electrons" ) {
104  m_electronType.push_back(chain.tail());
105  m_rawElectrons.push_back(chain.roi());
106 
107  if (chain.roi() == "LRT") m_electronIsLRT.push_back(true); // more abuse
108  else m_electronIsLRT.push_back(false);
109  }
110  else if ( cs=="Taus" ) {
111  m_tauType.push_back(chain.tail());
112  m_tauProngs.push_back(chain.roi());
113  }
114  else if ( cs=="Bjets" ) m_doBjets = true;
115  else {
116 
117  if ( cs!="" && cs.find("HLT")==std::string::npos ) {
119  // if ( m_provider ) m_provider->msg(MSG::WARNING) << "Unknown chain type: " << cs << endmsg;
120  // else std::cout << "Unknown chain type: " << cs << std::endl;
121  continue;
122  }
123 
124  m_chainNames.push_back( chain );
125 
126  }
127  }
128 
129  m_event = new TIDA::Event();
131 
132  }
133 
134  // non-copyable
137 
141  if ( !m_finalised ) finalize();
142  delete m_event;
143  }
144 
145  void set_ptmin( double d=0 ) { m_ptmin=d; }
146 
148  std::vector<TrackTrigObject>& objects, const std::string& key="" );
149 
150 protected:
151 
152  virtual void loop();
153 
154  virtual void book();
155 
156  virtual void finalize();
157 
159 
161 
162  TFile* m_File;
163  TTree* m_Tree;
164  TDirectory* m_Dir;
165 
166  std::vector<ChainString> m_chainNames;
167 
170  bool m_doMuons;
172 
173  std::vector<std::string> m_muonType;
174  std::vector<bool> m_muonIsLRT;
175 
176  std::vector<std::string> m_electronType;
177  std::vector<std::string> m_rawElectrons;
178  std::vector<bool> m_electronIsLRT;
179 
180  std::vector<std::string> m_tauType;
181  std::vector<std::string> m_tauProngs;
182 
183  std::vector<std::string> m_vertexType;
184 
185  bool m_doBjets;
188 
189  std::string m_outputFileName;
190 
192 
194 
195  // bool m_keepAllEvents; // nw in base class
196 
198 
199  double m_ptmin;
200 
202 
203 };
204 
205 
206 
207 #endif // TrigInDetAnalysisExample_AnalysisConfig_Ntuple_H
208 
AnalysisConfig_Ntuple::get_jets
size_t get_jets(Trig::FeatureContainer::combination_const_iterator citr, std::vector< TrackTrigObject > &objects, const std::string &key="")
retrieve the jets from the Roi
Definition: AnalysisConfig_Ntuple.cxx:134
AnalysisConfig_Ntuple::m_TruthPdgId
int m_TruthPdgId
Definition: AnalysisConfig_Ntuple.h:191
Trig::FeatureContainer::combination_const_iterator
std::vector< Combination >::const_iterator combination_const_iterator
Definition: FeatureContainer.h:69
AnalysisConfig_Ntuple::set_ptmin
void set_ptmin(double d=0)
Definition: AnalysisConfig_Ntuple.h:145
T_AnalysisConfig< AthReentrantAlgorithm >::m_mcTruth
bool m_mcTruth
Definition: T_AnalysisConfig.h:988
runLayerRecalibration.chain
chain
Definition: runLayerRecalibration.py:175
LArConditions2Ntuple.objects
objects
Definition: LArConditions2Ntuple.py:63
TIDAEvent.h
Basic event class to contain a vector of chains for trigger analysis
AnalysisConfig_Ntuple::m_muonIsLRT
std::vector< bool > m_muonIsLRT
Definition: AnalysisConfig_Ntuple.h:174
AnalysisConfig_Ntuple::m_parentTruthPdgId
int m_parentTruthPdgId
Definition: AnalysisConfig_Ntuple.h:201
hist_file_dump.d
d
Definition: hist_file_dump.py:143
AnalysisConfig_Ntuple::m_vertexType
std::vector< std::string > m_vertexType
Definition: AnalysisConfig_Ntuple.h:183
TIDAVertex.h
JiveXML::Event
struct Event_t Event
Definition: ONCRPCServer.h:65
AnalysisConfig_Ntuple::m_useBeamCondSvc
bool m_useBeamCondSvc
Definition: AnalysisConfig_Ntuple.h:158
AnalysisConfig_Ntuple::m_chainNames
std::vector< ChainString > m_chainNames
Definition: AnalysisConfig_Ntuple.h:166
AnalysisConfig_Ntuple::AnalysisConfig_Ntuple
AnalysisConfig_Ntuple(const AnalysisConfig_Ntuple &)
AnalysisConfig_Ntuple::AnalysisConfig_Ntuple
AnalysisConfig_Ntuple(const std::vector< std::string > &chainNames, const std::string &outputFileName="TrkNtuple.root", double tauEtCutOffline=0.0, int TruthPdgId=0, bool _keepAllEvents=false, int parentTruthPdgId=0)
Definition: AnalysisConfig_Ntuple.h:43
ChainString
Definition: ChainString.h:23
T_AnalysisConfig.h
TIDA::Event
Definition: TIDAEvent.h:33
AnalysisConfig_Ntuple::m_electronIsLRT
std::vector< bool > m_electronIsLRT
Definition: AnalysisConfig_Ntuple.h:178
AthReentrantAlgorithm
An algorithm that can be simultaneously executed in multiple threads.
Definition: AthReentrantAlgorithm.h:74
AnalysisConfig_Ntuple::m_Dir
TDirectory * m_Dir
Definition: AnalysisConfig_Ntuple.h:164
AnalysisConfig_Ntuple::finalize
virtual void finalize()
finalise the analysis - take ratios for efficiencies etc
Definition: AnalysisConfig_Ntuple.cxx:279
AnalysisConfig_Ntuple::m_muonType
std::vector< std::string > m_muonType
Definition: AnalysisConfig_Ntuple.h:173
lumiFormat.i
int i
Definition: lumiFormat.py:85
AnalysisConfig_Ntuple::m_Tree
TTree * m_Tree
Definition: AnalysisConfig_Ntuple.h:163
AnalysisConfig_Ntuple::loop
virtual void loop()
Definition: AnalysisConfig_Ntuple.cxx:174
AnalysisConfig_Ntuple::m_rawElectrons
std::vector< std::string > m_rawElectrons
Definition: AnalysisConfig_Ntuple.h:177
AnalysisConfig_Ntuple::m_printInfo
bool m_printInfo
Definition: AnalysisConfig_Ntuple.h:197
AnalysisConfig_Ntuple::m_tauProngs
std::vector< std::string > m_tauProngs
Definition: AnalysisConfig_Ntuple.h:181
AthReentrantAlgorithm.h
AnalysisConfig_Ntuple::m_finalised
bool m_finalised
Definition: AnalysisConfig_Ntuple.h:193
AnalysisConfig_Ntuple::m_doOffline
bool m_doOffline
Definition: AnalysisConfig_Ntuple.h:168
ChainString.h
AnalysisConfig_Ntuple::m_File
TFile * m_File
Definition: AnalysisConfig_Ntuple.h:162
AnalysisConfig_Ntuple::m_doMuons
bool m_doMuons
Definition: AnalysisConfig_Ntuple.h:170
AnalysisConfig_Ntuple::m_ptmin
double m_ptmin
Definition: AnalysisConfig_Ntuple.h:199
TrackParticle.h
AnalysisConfig_Ntuple::~AnalysisConfig_Ntuple
virtual ~AnalysisConfig_Ntuple()
Definition: AnalysisConfig_Ntuple.h:138
AnalysisConfig_Ntuple::book
virtual void book()
setup the analysis the analysis, retrieve the tools etc
Definition: AnalysisConfig_Ntuple.cxx:188
AnalysisConfig_Ntuple::operator=
AnalysisConfig_Ntuple & operator=(const AnalysisConfig_Ntuple &)
AnalysisConfig_Ntuple::m_event
TIDA::Event * m_event
Definition: AnalysisConfig_Ntuple.h:160
AnalysisConfig_Ntuple::m_doVertices
bool m_doVertices
Definition: AnalysisConfig_Ntuple.h:169
AnalysisConfig_Ntuple::m_tauType
std::vector< std::string > m_tauType
Definition: AnalysisConfig_Ntuple.h:180
AnalysisConfig_Ntuple::m_doBjets
bool m_doBjets
Definition: AnalysisConfig_Ntuple.h:185
T_AnalysisConfig< AthReentrantAlgorithm >::keepAllEvents
void keepAllEvents(bool b)
Definition: T_AnalysisConfig.h:276
AnalysisConfig_Ntuple::m_hasTruthMap
bool m_hasTruthMap
Definition: AnalysisConfig_Ntuple.h:186
AthenaPoolExample_Copy.outputFileName
string outputFileName
Definition: AthenaPoolExample_Copy.py:40
AnalysisConfig_Ntuple::m_tauEtCutOffline
bool m_tauEtCutOffline
Definition: AnalysisConfig_Ntuple.h:187
AnalysisConfig_Ntuple::m_doMuonsSP
bool m_doMuonsSP
Definition: AnalysisConfig_Ntuple.h:171
AnalysisConfig_Ntuple
Definition: AnalysisConfig_Ntuple.h:32
TrackParticleContainer.h
AnalysisConfig_Ntuple::m_outputFileName
std::string m_outputFileName
Definition: AnalysisConfig_Ntuple.h:189
AnalysisConfig_Ntuple::m_electronType
std::vector< std::string > m_electronType
Definition: AnalysisConfig_Ntuple.h:176
T_AnalysisConfig
Definition: T_AnalysisConfig.h:59
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37