ATLAS Offline Software
Loading...
Searching...
No Matches
T_AnalysisConfigMT_Tier0< T, A > Class Template Reference

#include <T_AnalysisConfigMT_Tier0.h>

Inheritance diagram for T_AnalysisConfigMT_Tier0< T, A >:
Collaboration diagram for T_AnalysisConfigMT_Tier0< T, A >:

Public Member Functions

 T_AnalysisConfigMT_Tier0 (const std::string &analysisInstanceName, const std::string &testChainName, const std::string &testType, const std::string &testKey, const std::string &referenceChainName, const std::string &referenceType, const std::string &referenceKey, TrackFilter *testFilter, TrackFilter *referenceFilter, TrackAssociator *associator, TrackAnalysis *analysis, TagNProbe *TnP_tool=0)
virtual ~T_AnalysisConfigMT_Tier0 ()
void setRunPurity (bool b)
void setShifter (bool b)
void useBeamCondSvc (bool b)
void containTracks (bool b)
void addTestChain (const std::string &chainName, const std::string &type, const std::string &key)
void addReferenceChain (const std::string &chainName, const std::string &type, const std::string &key)
void addSelectionChain (const std::string &chainName, const std::string &type, const std::string &key)
void addTestFilter (TrackFilter *filter)
void addReferenceFilter (TrackFilter *filter)
void addSelectionFilter (TrackFilter *filter)
virtual void initialize (T *p, ToolHandle< Trig::TrigDecisionTool > *tdt)
virtual void execute ()
const std::string & name () const
const std::string testChains () const
const std::string referenceChains () const
const std::string selectionChains () const
const TrackAnalysisanalysis () const
void setMCTruth (bool b=true)
bool mcTruth () const
void setBeamX (double d)
void setBeamY (double d)
void setBeamZ (double d)
double beamX () const
double beamY () const
double beamZ () const
bool genericFlag () const
void setGenericFlag (bool b)
const std::string & releaseData () const
void keepAllEvents (bool b)
void setUseHighestPT (bool b)
bool getUseHighestPT () const
void setVtxIndex (int i)
int getVtxIndex () const
bool filterOnRoi () const
bool setFilterOnRoi (bool b)
void setRequireDecision (bool b)
bool requireDecision () const

Public Attributes

A_analysis

Protected Member Functions

virtual void loop ()
virtual void book ()
virtual void finalize ()
void set_monTool (ToolHandle< GenericMonitoringTool > *m)
ToolHandle< GenericMonitoringTool > * monTool ()
std::pair< typename Collection::const_iterator, typename Collection::const_iterator > getCollection (const ElementLink< TrigRoiDescriptorCollection > &roi_link, const std::string &key="")
 new MT feature access
bool select (std::vector< TIDA::Vertex > &vertices, xAOD::VertexContainer::const_iterator vtx_start, xAOD::VertexContainer::const_iterator vtx_end)
bool selectTracks (TrigTrackSelector *selector, const ElementLink< TrigRoiDescriptorCollection > &roi_link, const std::string &key="")
StatusCode retrieve (Collection const *&collection, const std::string &key="")
bool selectTracksNotEmpty (TrigTrackSelector *selector, const std::string &key)
std::vector< double > getBeamspot (const std::string &key)
unsigned processElectrons (TrigTrackSelector &selectorRef, std::vector< TrackTrigObject > *elevec=0, const unsigned int selection=0, bool raw_track=false, double ETOffline=0, const std::string &containerName="ElectronAODCollection")
 select offline electrons
unsigned processMuons (TrigTrackSelector &selectorRef, const unsigned int selection=0, double ETOffline=0, const std::string &containerName="StacoMuonCollection")
 select offlinqe muons
unsigned processTaus (TrigTrackSelector &selectorRef, std::vector< TrackTrigObject > *tauvec=0, const unsigned selection=0, int requireNtracks=0, double EtCutOffline=0, const std::string &containerName="TauJets")
 select offline taus

Protected Attributes

bool m_useBeamCondSvc
TIDA::Eventm_event
std::vector< ChainStringm_chainNames
std::vector< A * > m_analyses
std::string m_testType
bool m_doOffline
bool m_doMuons
bool m_doElectrons
bool m_doTaus
bool m_doBjets
bool m_hasTruthMap
bool m_doTauThreeProng
bool m_tauEtCutOffline
std::string m_outputFileName
int m_NRois
 output stats
int m_NRefTracks
int m_NTestTracks
bool m_runPurity
bool m_shifter
double m_pTthreshold
bool m_first
bool m_containTracks
TagNProbem_TnP_tool
TH1F * m_invmass
TH1F * m_invmass_obj
ToolHandle< GenericMonitoringTool > * m_monTool
T * m_provider
ToolHandle< Trig::TrigDecisionTool > * m_tdt
std::string m_analysisInstanceName
std::vector< std::vector< std::string > > m_types
std::vector< std::vector< std::string > > m_keys
std::vector< std::vector< TrackFilter * > > m_filters
std::string m_refChainName
std::string m_refChainKey
std::string m_testChainName
std::string m_testChainKey
TrigTrackSelectorm_selectorRef
TrigTrackSelectorm_selectorTest
TrigTrackSelectorm_selectorSel
TrackAssociatorm_associator
TrackAnalysism_analysis
bool m_mcTruth
double m_beamX
double m_beamY
double m_beamZ
int m_genericFlag
std::string m_releaseData
bool m_keepAllEvents
bool m_useHighestPT
int m_vtxIndex
bool m_filterOnRoi
bool m_requireDecision

Detailed Description

template<typename T, typename A = Analysis_Tier0>
class T_AnalysisConfigMT_Tier0< T, A >

Definition at line 86 of file T_AnalysisConfigMT_Tier0.h.

Constructor & Destructor Documentation

◆ T_AnalysisConfigMT_Tier0()

template<typename T, typename A = Analysis_Tier0>
T_AnalysisConfigMT_Tier0< T, A >::T_AnalysisConfigMT_Tier0 ( const std::string & analysisInstanceName,
const std::string & testChainName,
const std::string & testType,
const std::string & testKey,
const std::string & referenceChainName,
const std::string & referenceType,
const std::string & referenceKey,
TrackFilter * testFilter,
TrackFilter * referenceFilter,
TrackAssociator * associator,
TrackAnalysis * analysis,
TagNProbe * TnP_tool = 0 )
inline

FIXME: the m_event should not be needed, we need to make this a local variable

Definition at line 96 of file T_AnalysisConfigMT_Tier0.h.

102 :
108 analysis),
109 _analysis(0),
110 m_useBeamCondSvc(false),
111 m_doOffline(true),
112 m_doMuons(false),
113 m_doElectrons(false),
114 m_doTaus(false),
115 m_doBjets(false),
116 m_hasTruthMap(false),
117 m_doTauThreeProng(false),
118 m_tauEtCutOffline(false),
119 m_NRois(0),
120 m_NRefTracks(0),
121 m_NTestTracks(0),
122 m_runPurity(false),
123 m_shifter(false),
124 m_pTthreshold(0),
125 m_first(true),
126 m_containTracks(false),
128 m_invmass(0),
129 m_invmass_obj(0),
130 m_monTool(0)
131 {
133 m_event = new TIDA::Event();
134 m_chainNames.push_back(testChainName);
135
136#if 0
137 ChainString& chain = m_chainNames.back();
138
139 std::cout << "\nT_AnalysisConfigMT_Tier0::name: " << name() << "\t" << this << std::endl;
140 std::cout << "T_AnalysisConfigMT_Tier0::chain specification: " << testChainName << " -> " << chain << "\t" << chain.raw() << std::endl;
141 std::cout << "\tchain: " << chain.head() << std::endl;
142 std::cout << "\tkey: " << chain.tail() << std::endl;
143 std::cout << "\troi: " << chain.roi() << std::endl;
144 std::cout << "\tvtx: " << chain.vtx() << std::endl;
145 std::cout << "\tte: " << chain.element() << std::endl;
146
147 std::cout << "\tpost: " << chain.post() << std::endl;
148 std::cout << "\tpt: " << chain.postvalue("pt") << std::endl;
149
150 std::cout << "\tcontainTracks: " << m_containTracks << std::endl;
151#endif
152
154 }
std::vector< ChainString > m_chainNames
ToolHandle< GenericMonitoringTool > * m_monTool
const TrackAnalysis * analysis() const
const std::string & name() const
T_AnalysisConfig(const std::string &analysisInstanceName, const std::string &testChainName, const std::string &testType, const std::string &testKey, const std::string &referenceChainName, const std::string &referenceType, const std::string &referenceKey, const std::string &selectionChainName, const std::string &selectionType, const std::string &selectionKey, TrackFilter *testFilter, TrackFilter *referenceFilter, TrackFilter *selectionFilter, TrackAssociator *associator, TrackAnalysis *analysis)

◆ ~T_AnalysisConfigMT_Tier0()

template<typename T, typename A = Analysis_Tier0>
virtual T_AnalysisConfigMT_Tier0< T, A >::~T_AnalysisConfigMT_Tier0 ( )
inlinevirtual

Definition at line 156 of file T_AnalysisConfigMT_Tier0.h.

156 {
157 delete m_event;
158 if ( m_TnP_tool != 0 ) delete m_TnP_tool ;
159 }

Member Function Documentation

◆ addReferenceChain()

void T_AnalysisConfig< T >::addReferenceChain ( const std::string & chainName,
const std::string & type,
const std::string & key )
inlineinherited

Definition at line 162 of file T_AnalysisConfig.h.

162 {
163 m_chainNames[1].push_back(chainName); m_types[1].push_back(type); m_keys[1].push_back(key);
164 }
std::vector< std::vector< std::string > > m_chainNames
std::vector< std::vector< std::string > > m_types
std::vector< std::vector< std::string > > m_keys

◆ addReferenceFilter()

void T_AnalysisConfig< T >::addReferenceFilter ( TrackFilter * filter)
inlineinherited

Definition at line 171 of file T_AnalysisConfig.h.

171{ m_filters[1].push_back(filter); }
std::vector< std::vector< TrackFilter * > > m_filters

◆ addSelectionChain()

void T_AnalysisConfig< T >::addSelectionChain ( const std::string & chainName,
const std::string & type,
const std::string & key )
inlineinherited

Definition at line 166 of file T_AnalysisConfig.h.

166 {
167 m_chainNames[2].push_back(chainName); m_types[2].push_back(type); m_keys[2].push_back(key);
168 }

◆ addSelectionFilter()

void T_AnalysisConfig< T >::addSelectionFilter ( TrackFilter * filter)
inlineinherited

Definition at line 172 of file T_AnalysisConfig.h.

172{ m_filters[2].push_back(filter); }

◆ addTestChain()

void T_AnalysisConfig< T >::addTestChain ( const std::string & chainName,
const std::string & type,
const std::string & key )
inlineinherited

Definition at line 158 of file T_AnalysisConfig.h.

158 {
159 m_chainNames[0].push_back(chainName); m_types[0].push_back(type); m_keys[0].push_back(key);
160 }

◆ addTestFilter()

void T_AnalysisConfig< T >::addTestFilter ( TrackFilter * filter)
inlineinherited

Definition at line 170 of file T_AnalysisConfig.h.

170{ m_filters[0].push_back(filter); }

◆ analysis()

const TrackAnalysis * T_AnalysisConfig< T >::analysis ( ) const
inlineinherited

Definition at line 217 of file T_AnalysisConfig.h.

217{return m_analysis;}
TrackAnalysis * m_analysis

◆ beamX()

double T_AnalysisConfig< T >::beamX ( ) const
inlineinherited

Definition at line 225 of file T_AnalysisConfig.h.

225{ return m_beamX; }

◆ beamY()

double T_AnalysisConfig< T >::beamY ( ) const
inlineinherited

Definition at line 226 of file T_AnalysisConfig.h.

226{ return m_beamY; }

◆ beamZ()

double T_AnalysisConfig< T >::beamZ ( ) const
inlineinherited

Definition at line 227 of file T_AnalysisConfig.h.

227{ return m_beamZ; }

◆ book()

template<typename T, typename A = Analysis_Tier0>
virtual void T_AnalysisConfigMT_Tier0< T, A >::book ( )
inlineprotectedvirtual

Reimplemented from T_AnalysisConfig< T >.

Definition at line 1062 of file T_AnalysisConfigMT_Tier0.h.

1062 {
1063
1064 if(m_provider->msg().level() <= MSG::VERBOSE)
1065 m_provider->msg(MSG::VERBOSE) << "AnalysisConfigMT_Tier0::book() " << name() << endmsg;
1066
1067 m_provider->msg(MSG::ERROR) << "AnalysisConfigMT_Tier0::book() should no longer be called: " << name() << endmsg;
1068
1069
1070 }

◆ containTracks()

template<typename T, typename A = Analysis_Tier0>
void T_AnalysisConfigMT_Tier0< T, A >::containTracks ( bool b)
inline

Definition at line 167 of file T_AnalysisConfigMT_Tier0.h.

167{ m_containTracks = b; }

◆ execute()

virtual void T_AnalysisConfig< T >::execute ( )
inlinevirtualinherited

Definition at line 184 of file T_AnalysisConfig.h.

184 {
185 if ( !m_provider ) std::cerr << "ERROR T_AnalysisConfig::execute() called without initialising" << std::endl;
186 loop();
187 }
virtual void loop()=0

◆ filterOnRoi()

bool T_AnalysisConfig< T >::filterOnRoi ( ) const
inlineinherited

Definition at line 243 of file T_AnalysisConfig.h.

◆ finalize()

template<typename T, typename A = Analysis_Tier0>
virtual void T_AnalysisConfigMT_Tier0< T, A >::finalize ( )
inlineprotectedvirtual

Reimplemented from T_AnalysisConfig< T >.

Definition at line 1074 of file T_AnalysisConfigMT_Tier0.h.

1074 {
1075
1076 if(m_provider->msg().level() <= MSG::VERBOSE){
1077 m_provider->msg(MSG::VERBOSE) << "AnalysisConfigMT_Tier0::finalise() " << m_provider->name() << endmsg;
1078 }
1079
1080 m_analysis->finalise();
1081
1082 // deleting instance of TnP_tool and setting pointer to null
1083 if ( m_TnP_tool != 0 ) {
1084 delete m_TnP_tool ;
1085 m_TnP_tool = 0 ;
1086 }
1087
1088 m_provider->msg(MSG::INFO) << m_provider->name() << " " << m_chainNames[0] << " \tNRois processed: " << m_NRois << "\tRef tracks: " << m_NRefTracks << "\tTestTracks: " << m_NTestTracks << endmsg;
1089
1090 if(m_provider->msg().level() <= MSG::VERBOSE) {
1091 m_provider->msg(MSG::VERBOSE) << m_provider->name() << " finalised" << endmsg;
1092 }
1093 }

◆ genericFlag()

bool T_AnalysisConfig< T >::genericFlag ( ) const
inlineinherited

Definition at line 229 of file T_AnalysisConfig.h.

◆ getBeamspot()

std::vector< double > T_AnalysisConfig< T >::getBeamspot ( const std::string & key)
inlineprotectedinherited

Definition at line 590 of file T_AnalysisConfig.h.

590 {
591 const Collection* collection = 0;
593
594 if ( key!="" ) {
595 if ( m_provider->evtStore()->template contains<Collection>( key ) ) {
597 if( sc.isSuccess() && collection ) {
598 m_provider->msg(MSG::DEBUG) << "SG Collection->size() " << collection->size() << " (" << key << ")" << endmsg;
599
602 if ( trackitr!=trackend ) {
603 v.resize(3);
604 v[0] = (*trackitr)->vx();
605 v[1] = (*trackitr)->vy();
606 v[2] = (*trackitr)->vz();
607 return v;
608 } // only need to look at the first track
609 }
610 }
611 }
612 return v;
613 }
StatusCode retrieve(Collection const *&collection, const std::string &key="")

◆ getCollection()

std::pair< typename Collection::const_iterator, typename Collection::const_iterator > T_AnalysisConfig< T >::getCollection ( const ElementLink< TrigRoiDescriptorCollection > & roi_link,
const std::string & key = "" )
inlineprotectedinherited

new MT feature access

will need this printout for debugging the feature access, so leave this commented until it has been properly debugged, then it can be removed

will not use the te name here, but keep it on just the same for the time being, for subsequent development

Definition at line 258 of file T_AnalysisConfig.h.

259 {
260
263 // std::cout << "try " << key << "\t" << m_provider->evtStore()->template transientContains<Collection>(key) << std::endl;
264
269 size_t pos = key_collection.find("/");
270 if ( pos!=std::string::npos ) {
271 key_collection = key.substr( pos+1, key.size()-pos );
272 key_tename = key.substr( 0, pos );
273 }
274
277
279
281 const std::string* keyStr = m_provider->evtStore()->keyToString(roi_link.key(), checkCLID);
282 m_provider->msg(MSG::DEBUG) << "Requesting range over (" << key << ") associated to ROI from " << (keyStr == nullptr ? "UNKNOWN" : *keyStr) << endmsg;
283
284 itrpair = (*m_tdt)->associateToEventView( handle, roi_link );
285
286 return itrpair;
287 }

◆ getUseHighestPT()

bool T_AnalysisConfig< T >::getUseHighestPT ( ) const
inlineinherited

Definition at line 238 of file T_AnalysisConfig.h.

◆ getVtxIndex()

int T_AnalysisConfig< T >::getVtxIndex ( ) const
inlineinherited

Definition at line 241 of file T_AnalysisConfig.h.

◆ initialize()

virtual void T_AnalysisConfig< T >::initialize ( T * p,
ToolHandle< Trig::TrigDecisionTool > * tdt )
inlinevirtualinherited

Definition at line 175 of file T_AnalysisConfig.h.

175 {
176 m_provider = p;
177 m_tdt = tdt;
178 if ( m_tdt==0 ) m_analysis->initialise();
179
180 }
ToolHandle< Trig::TrigDecisionTool > * m_tdt

◆ keepAllEvents()

void T_AnalysisConfig< T >::keepAllEvents ( bool b)
inlineinherited

Definition at line 235 of file T_AnalysisConfig.h.

◆ loop()

template<typename T, typename A = Analysis_Tier0>
virtual void T_AnalysisConfigMT_Tier0< T, A >::loop ( )
inlineprotectedvirtual

handle wildcard chain selection - but only the first time NB: also check all other chains as well - only set up an analysis for configured chains

get chain

get matching chains

replace wildcard with actual matching chains ...

end of first event setup

all this should perhaps be class variables

will need to add a vertex filter at some point probably

now start everything going for this event properly ...

(obviously) get the event info

first check whether the chains have actually run, otherwise there's no point doing anything

for Monte Carlo get the truth particles if requested to do so

get the offline vertices into our structure

fetch offline vertices ...

add the truth particles if needed

now add the vertices

now add the offline tracks and reco objects

AOD

xAOD::TruthParticles

anything else?

selectTracks<TruthParticleContainer>( &selectorTruth, "INav4MomTruthEvent" );

I'm oldschool and prefer the implicit (T*)0 than the implicit (T*)nullptr

now as a check go through the GenEvent collection

found this key

not found any truth collection

count of "events" - or interactions

count of particles

count of "events with some particles"

count of particles in this interaction

hooray! actually found a sensible event

if there were some particles in this interaction ...

need to be careful here, if not requiring truth only should not return

now loop over all relevant chains to get the trigger tracks...

create chains for ntpl

why does this need to be a class variable ???

useful debug information to be kept in for the time being

useful debug information to be kept in

Get chain combinations and loop on them

  • loop made on chain selected as the one steering RoI creation

only use the TDT for extracting collections if this was a trigger analysis for fullscan "offline" type analyses (ie fullscan FTK) do not use this

do we still want the blind chain access for track collections ???

dummy full scan chain

MT Vertex access

new Roi based feature access

new FeatureRequestDescriptor with leg access

count of how many rois processed so far

don't extract any additional rois if a superRoi is requested: In this case, the superRoi would be shared between the different chains

check this is not a spurious TDT match

get the tracks

create analysis chain

get tracks

now get the vertices

retrieve online vertices

"offline" of "roi" type chains

This is nonsense and needs restructuring - why is the truth and offline selection done within this RoI loop? It means the complete offline and truth tracks will be retrieved for every RoI ! really we should have the structure

  • check_a_trigger_chain_has_passed
  • get_offline_or_truth_particles
  • loop_over_rois
    • get_trigger_tracks
    • filter_offline_or_truth_reference
    • match_tracks
    • call_analyis_routine

will leave as it is for the time being

what is this for ???

if we want a purity, we need to swap round which tracks are the reference tracks and which the test tracks

stats book keeping

match test and reference tracks

filter on highest pt track only if required

ignore all tracks belong the specific analysis pt threshold if set

stats book keeping

match test and reference tracks

get vertices for this roi - have to copy to a vector<Vertex*>

Implements T_AnalysisConfig< T >.

Definition at line 188 of file T_AnalysisConfigMT_Tier0.h.

188 {
189
190 bool TnP_flag = (m_TnP_tool != 0) ; // flag for tag and probe analysis
191
192 if( m_provider->msg().level() <= MSG::VERBOSE) {
193 m_provider->msg(MSG::VERBOSE) << "AnalysisConfigMT_Tier0::loop() for " << T_AnalysisConfig<T>::m_analysisInstanceName << endmsg;
194 }
195
196 // get (offline) beam position
197 double xbeam = 0;
198 double ybeam = 0;
199
200 if ( m_first ) {
201
202 m_first = false;
203
204 if ( m_provider->msg().level() <= MSG::VERBOSE ) {
205 m_provider->msg(MSG::VERBOSE) << " using beam position\tx=" << xbeam << "\ty=" << ybeam << endmsg;
206
208
209 for ( unsigned i=0 ; i<configuredChains.size() ; i++ ) {
210 // std::cout << "Configured chain " << configuredChains[i] << std::endl;
211 m_provider->msg(MSG::VERBOSE) << "Chain " << configuredChains[i] << endmsg;
212 }
213 }
214
215 // std::cout << "\tloop() analyse chains " << m_chainNames.size() << std::endl;
216
218
220
224 while ( chainitr!=m_chainNames.end() ) {
225
227 ChainString& chainName = (*chainitr);
228
229 if (m_provider->msg().level() <= MSG::VERBOSE) {
230 m_provider->msg(MSG::VERBOSE) << "process chain " << chainName << endmsg;
231 }
232
233 if ( chainName.head() == "" ) {
234
236
237 chains.push_back( ChainString(selectChain) );
238
239 }
240 else {
241
244
245 for ( unsigned iselected=0 ; iselected<selectChains.size() ; iselected++ ) {
246
248
249#if 0
250 std::cout << "sorting:: chain specification: " << chainName << "\traw:" << chainName.raw() << std::endl;
251 std::cout << "\tchain: " << chainName.head() << std::endl;
252 std::cout << "\tkey: " << chainName.tail() << std::endl;
253 std::cout << "\tind: " << chainName.extra() << std::endl;
254 std::cout << "\troi: " << chainName.roi() << std::endl;
255 std::cout << "\tvtx: " << chainName.vtx() << std::endl;
256 std::cout << "\tte: " << chainName.element() << std::endl;
257#endif
258
261
262 if(m_provider->msg().level() <= MSG::VERBOSE) {
263 m_provider->msg(MSG::VERBOSE) << "Matching chain " << selectChains[iselected] << " (" << chainName.head() << ")" << endmsg;
264 }
265
266 // std::cout<< "\tMatching chain " << sc << " (" << chainName.head() << ")" << std::endl;
267
268 }
269 }
270
271 ++chainitr;
272 }
273
274 // m_chainNames.insert( m_chainNames.end(), chains.begin(), chains.end() );
276
277 if(m_provider->msg().level() <= MSG::VERBOSE) {
278 for ( size_t ic=m_chainNames.size() ; ic-- ; ) m_provider->msg(MSG::VERBOSE) << "Analyse chain " << m_chainNames[ic] << endmsg;
279 }
280
281 }
282
283 // std::cout << "\tloop() event analysis ..." << std::endl;
284
287
290
292 // Filter_Combined filterRef (&filter_offline, &filter_vertex);
293
294 int iRefFilter = 1;
295 int iTestFilter = 0;
296
297 if ( m_runPurity ) {
298 iRefFilter = 0;
299 iTestFilter = 1;
300 }
301
304
305
311
312 if ( xbeam!=0 || ybeam!=0 ) {
313 m_selectorRef->setBeamline( xbeam, ybeam );
314 }
315
317
318 // clear the ntuple TIDA::Event class
319 m_event->clear();
320
322
324
325 unsigned run_number = 0;
326 unsigned long long event_number = 0;
327 unsigned lumi_block = 0;
328 unsigned bunch_crossing_id = 0;
329 unsigned time_stamp = 0;
330 double mu_val = 0;
331
332 // std::cout << "\tloop() get EventInfo" << std::endl;
333
334 if ( this->template retrieve(pEventInfo, "EventInfo").isFailure() ) {
335 m_provider->msg(MSG::WARNING) << "Failed to get EventInfo " << endmsg;
336 } else {
337
338 run_number = pEventInfo->runNumber();
339 event_number = pEventInfo->eventNumber();
340 lumi_block = pEventInfo->lumiBlock();
341 time_stamp = pEventInfo->timeStamp();
343 mu_val = pEventInfo->averageInteractionsPerCrossing();
344 }
345
346 if(m_provider->msg().level() <= MSG::VERBOSE){
347 m_provider->msg(MSG::VERBOSE) << "run " << run_number
348 << "\tevent " << event_number
349 << "\tlb " << lumi_block << endmsg;
350 }
351
352 // m_provider->msg(MSG::INFO) << "run " << run_number
353 // << "\tevent " << event_number
354 // << "\tlb " << lumi_block << endmsg;
355
356 // std::cout << "\trun " << run_number << "\tevent " << event_number << "\tlb " << lumi_block << std::endl;
357
358
359 // clear the ntuple TIDA::Event class
360 m_event->clear();
361
362 m_event->run_number(run_number);
363 m_event->event_number(event_number);
364 m_event->lumi_block(lumi_block);
365 m_event->time_stamp(time_stamp);
366 m_event->bunch_crossing_id(bunch_crossing_id);
367 m_event->mu(mu_val);
368
371
372 bool analyse = false;
373
374 // Check HLTResult
375
376 // std::cout << "\tloop() loop over trigger chains to determine whether to process this event ..." << std::endl;
377
378 for ( unsigned ichain=0 ; ichain<m_chainNames.size() ; ichain++ ) {
379
380 const std::string& chainname = m_chainNames[ichain].head();
381
382 if ( chainname == "" ) analyse = true;
383 else {
384
385 //Only for trigger chains
386 if ( chainname.find("L2") == std::string::npos &&
387 chainname.find("EF") == std::string::npos &&
388 chainname.find("HLT") == std::string::npos ) continue;
389
390 if ( m_provider->msg().level() <= MSG::DEBUG ) {
391 m_provider->msg(MSG::DEBUG) << "Chain " << chainname
392 << "\tpass " << (*m_tdt)->isPassed(chainname)
393 << "\tpres " << (*m_tdt)->getPrescale(chainname) << endmsg;
394 }
395
396 // std::cout << "\tChain " << chainname << "\tpass " << (*m_tdt)->isPassed(chainname)
397 // << "\tpres " << (*m_tdt)->getPrescale(chainname) << std::endl;
398
399 if ( (*(m_tdt))->isPassed(chainname) || (*(m_tdt))->getPrescale(chainname) ) analyse = true;
400
401 }
402 }
403
404
405 // if ( (*m_tdt)->ExperimentalAndExpertMethods().isHLTTruncated() ) {
406 // m_provider->msg(MSG::WARNING) << "HLTResult truncated, skipping event" << endmsg;
407 // return;
408 // }
409
410 if ( !this->m_keepAllEvents && !analyse ) {
411 // m_provider->msg(MSG::VERBOSE) << "No chains passed unprescaled - not processing this event" << endmsg;
412 if(m_provider->msg().level() <= MSG::VERBOSE) {
413 m_provider->msg(MSG::VERBOSE) << "No chains passed unprescaled - not processing this event" << endmsg;
414 }
415 // std::cout << "\tNo chains passed unprescaled - not processing this event" << std::endl;
416 return;
417 }
418
419
420
422
423 selectorTruth.clear();
424
425
426
427 if(m_provider->msg().level() <= MSG::VERBOSE)
428 m_provider->msg(MSG::VERBOSE) << "MC Truth flag " << m_mcTruth << endmsg;
429
430 if ( m_mcTruth && m_provider->msg().level() <= MSG::VERBOSE ) m_provider->msg(MSG::VERBOSE) << "getting Truth" << endmsg;
431
432
434
437
440
442
443 m_provider->msg(MSG::VERBOSE) << "fetching AOD Primary vertex container" << endmsg;
444
445 if ( !this->select( vertices, "PrimaryVertices" ) ) {
446 m_provider->msg(MSG::VERBOSE) << "could not retrieve vertex collection " "PrimaryVertices" << std::endl;
447 }
448
450
451 if ( m_mcTruth ) {
452 m_event->addChain( "Truth" );
453 m_event->back().addRoi(TIDARoiDescriptor());
454 m_event->back().back().addTracks(selectorTruth.tracks());
455 }
456
458
459 if ( m_doOffline ) {
460 for ( unsigned i=0 ; i<vertices.size() ; i++ ) {
461 if(m_provider->msg().level() <= MSG::VERBOSE)
462 m_provider->msg(MSG::VERBOSE) << "vertex " << i << " " << vertices[i] << endmsg;
463 m_event->addVertex(vertices[i]);
464 }
465 }
466
468
469 // int Noff = 0;
473
476
477 offline_tracks.clear();
478 electron_tracks.clear();
479 muon_tracks.clear();
480
481 ref_tracks.clear();
482 test_tracks.clear();
483
484 // offline track retrieval now done once for each chain rather than each roi
485 if ( m_provider->msg().level() <= MSG::VERBOSE )
486 m_provider->msg(MSG::VERBOSE) << "MC Truth flag " << m_mcTruth << endmsg;
487
488 bool foundTruth = false;
489
490 if ( !m_doOffline && m_mcTruth ) {
491
492 filter_truth.setRoi( 0 ); // don't filter on RoI yet (or until needed)
493
494 selectorTruth.clear();
495
496 if ( m_provider->msg().level() <= MSG::VERBOSE )
497 m_provider->msg(MSG::VERBOSE) << "getting Truth" << endmsg;
498
499 if ( m_provider->evtStore()->template contains<TruthParticleContainer>("INav4MomTruthEvent") ) {
500 //ESD
501 this->template selectTracks<TruthParticleContainer>( &selectorTruth, "INav4MomTruthEvent" );
502 foundTruth = true;
503 }
504 else if ( m_provider->evtStore()->template contains<TruthParticleContainer>("SpclMC") ) {
506 this->template selectTracks<TruthParticleContainer>( &selectorTruth, "SpclMC");
507 foundTruth = true;
508 }
509 else if ( m_provider->evtStore()->template contains<xAOD::TruthParticleContainer>("TruthParticles") ) {
511 this->template selectTracks<xAOD::TruthParticleContainer>( &selectorTruth, "TruthParticles");
512 foundTruth = true;
513 }
514 else if ( m_provider->evtStore()->template contains<TruthParticleContainer>("") ) {
517 foundTruth = true;
518 }
519 else
520 if ( m_provider->msg().level() <= MSG::VERBOSE ) {
521 m_provider->msg(MSG::VERBOSE) << "Truth not found - none whatsoever!" << endmsg;
522 }
523 }
524
525 if ( !m_doOffline && m_mcTruth && !foundTruth ) {
526
527 if ( m_provider->msg().level() <= MSG::VERBOSE ) {
528 m_provider->msg(MSG::VERBOSE) << "getting Truth" << endmsg;
529 }
530
532
534 const McEventCollection* mcevent = 0;
535
537
538 std::string keys[4] = { "GEN_AOD", "TruthEvent", "", "G4Truth" };
539
540 std::string key = "";
541
542 bool foundcollection = false;
543
544 for ( int ik=0 ; ik<4 ; ik++ ) {
545
546 if ( m_provider->msg().level() <= MSG::VERBOSE ) {
547 m_provider->msg(MSG::VERBOSE) << "Try McEventCollection: " << keys[ik] << endmsg;
548 }
549
550 if ( !m_provider->evtStore()->template contains<McEventCollection>(keys[ik]) ) {
551 if( m_provider->msg().level() <= MSG::VERBOSE )
552 m_provider->msg(MSG::VERBOSE) << "No McEventCollection: " << keys[ik] << endmsg;
553 continue;
554 }
555
556 if ( m_provider->msg().level() <= MSG::VERBOSE )
557 m_provider->msg(MSG::VERBOSE) << "evtStore()->retrieve( mcevent, " << keys[ik] << " )" << endmsg;
558
559 if ( this->template retrieve( mcevent, keys[ik] ).isFailure() ) {
560 if ( m_provider->msg().level() <= MSG::VERBOSE )
561 m_provider->msg(MSG::VERBOSE) << "Failed to get McEventCollection: " << keys[ik] << endmsg;
562 }
563 else {
565 key = keys[ik];
566 if(m_provider->msg().level() <= MSG::VERBOSE)
567 m_provider->msg(MSG::VERBOSE) << "Found McEventCollection: " << key << endmsg;
568 foundcollection = true;
569 break;
570 }
571 }
572
574 if ( !foundcollection ) {
575 if(m_provider->msg().level() <= MSG::VERBOSE)
576 m_provider->msg(MSG::WARNING) << "No MC Truth Collections of any sort, whatsoever!!!" << endmsg;
577
578 // m_tree->Fill();
579 // return StatusCode::FAILURE;
580
581 return;
582 }
583
584 if ( m_provider->msg().level() <= MSG::VERBOSE ) {
585 m_provider->msg(MSG::VERBOSE) << "Found McEventCollection: " << key << "\tNevents " << mcevent->size() << endmsg;
586 }
587
590
591 unsigned ie = 0;
592 unsigned ip = 0;
593
594 unsigned ie_ip = 0;
595
596 while ( evitr!=evend ) {
597
598 int _ip = 0;
599
601
602 //The logic should be clarified here
603 if ( pid!=0 ) {
604
605 for (auto pitr: *(*evitr) ) {
606
607 selectorTruth.selectTrack( pitr );
608
609 ++_ip;
610
611 }
612
613 }
614 ++ie;
615 ++evitr;
616
617 if ( _ip>0 ) {
619 // m_provider->msg(MSG::VERBOSE) << "Found " << ie << "\tpid " << pid << "\t with " << ip << " TruthParticles (GenParticles)" << endmsg;
620 ++ie_ip;
621 ip += _ip;
622 }
623 }
624
625 if(m_provider->msg().level() <= MSG::VERBOSE){
626 m_provider->msg(MSG::VERBOSE) << "Found " << ip << " TruthParticles (GenParticles) in " << ie_ip << " GenEvents out of " << ie << endmsg;
627 m_provider->msg(MSG::VERBOSE) << "selected " << selectorTruth.size() << " TruthParticles (GenParticles)" << endmsg;
628 }
629
630 if(selectorTruth.size() > 0) foundTruth = true;
631
632 if ( !(ip>0) ) {
633 if (m_provider->msg().level() <= MSG::VERBOSE) m_provider->msg(MSG::WARNING) << "NO TRUTH PARTICLES - returning" << endmsg;
634 return;
635 }
636
637 }
638
639 // m_provider->msg(MSG::VERBOSE) << " Offline tracks " << endmsg;
640
641 if ( m_doOffline ) {
642
643 if ( m_provider->evtStore()->template contains<xAOD::TrackParticleContainer>("InDetTrackParticles") ) {
644 this->template selectTracks<xAOD::TrackParticleContainer>( m_selectorRef, "InDetTrackParticles" );
645 refbeamspot = this->template getBeamspot<xAOD::TrackParticleContainer>( "InDetTrackParticles" );
646 }
647 else if (m_provider->evtStore()->template contains<Rec::TrackParticleContainer>("TrackParticleCandidate") ) {
648 this->template selectTracks<Rec::TrackParticleContainer>( m_selectorRef, "TrackParticleCandidate" );
649 }
650 else if ( m_provider->msg().level() <= MSG::WARNING ) {
651 m_provider->msg(MSG::WARNING) << " Offline tracks not found " << endmsg;
652 }
653
654 }
655
656
657 // std::cout << "\tloop() loop over chains proper ..." << std::endl;
658
660 for ( unsigned ichain=0 ; ichain<m_chainNames.size() ; ichain++ ) {
661
663
664 // std::string& chainname = chains[ichain];
665 const std::string& chainname = m_chainNames[ichain].head();
666 const std::string& key = m_chainNames[ichain].tail();
667 const std::string& vtx_name = m_chainNames[ichain].vtx();
668 //Not used left just in case
669 //const std::string& roi_name = m_chainNames[ichain].roi();
670 //const std::string& te_name = m_chainNames[ichain].element();
671 m_pTthreshold = 0;
672
673 if ( m_chainNames[ichain].postcount() ) {
674 std::string ptvalue = m_chainNames[ichain].postvalue("pt");
676 }
677
678
680 unsigned decisiontype;
681
683
684
687
689 // if ( decisiontype==TrigDefs::requireDecision ) std::cout << "\tSUTT TrigDefs::requireDecision " << decisiontype << std::endl;
690 // if ( decisiontype==TrigDefs::Physics ) std::cout << "\tSUTT TrigDefs::Physics " << decisiontype << std::endl;
691
692 if ( chainname!="" && m_provider->msg().level() <= MSG::VERBOSE ) {
693
694 m_provider->msg(MSG::VERBOSE) << "status for chain " << chainname
695 << "\tpass " << (*m_tdt)->isPassed(chainname)
696 << "\tprescale " << (*m_tdt)->getPrescale(chainname) << endmsg;
697
698 m_provider->msg(MSG::VERBOSE) << "fetching features for chain " << chainname << endmsg;
699
700 m_provider->msg(MSG::VERBOSE) << chainname << "\tpassed: " << (*m_tdt)->isPassed( chainname ) << endmsg;
701 }
702
704 // std::cout << "\tstatus for chain " << chainname
705 // << "\tpass " << (*m_tdt)->isPassed( chainname )
706 // << "\tpassdt " << (*m_tdt)->isPassed( chainname, decisiontype )
707 // << "\tprescale " << (*m_tdt)->getPrescale( chainname ) << std::endl;
708
709
710 // m_provider->msg(MSG::INFO) << chainname << "\tpassed: " << (*m_tdt)->isPassed( chainname ) << "\t" << m_chainNames[ichain] << "\trun " << run_number << "\tevent " << event_number << endmsg;
711
712
713 if ( chainname!="" && !this->m_keepAllEvents && !(*m_tdt)->isPassed( chainname, decisiontype ) ) continue;
714
715
718 // Trig::FeatureContainer f = (*m_tdt)->features( chainname, TrigDefs::alsoDeactivateTEs);
719
722
723 // tag and probe analysis processes multiple chains passed in the tag and probe tool at once so loop over vector of chains
725
726 if ( !TnP_flag ) {
727 chainNames.push_back(m_chainNames[ichain].raw()) ;
728 }
729 else {
730 chainNames.push_back(m_TnP_tool->tag()) ;
731 chainNames.push_back(m_TnP_tool->probe()) ;
732 }
733
734 // loop over new chainNames vector but doing the same stuff
735 for ( unsigned i = 0 ; i < chainNames.size() ; ++i ) {
736
739
740 m_event->addChain( chainNames[i] );
741
742 TIDA::Chain& chain = m_event->back();
743
744 if ( chainName == "" ) {
745
747
748 m_selectorTest->clear();
749
751
753
754 chain.addRoi( *roiInfo );
755
756 if ( m_provider->evtStore()->template contains<xAOD::TrackParticleContainer>(key) ) {
759 }
760
762
763 chain.back().addTracks(testtracks);
764
765 if ( vtx_name!="" ) {
766
768
769 m_provider->msg(MSG::VERBOSE) << "\tFetch xAOD::VertexContainer with key " << vtx_name << endmsg;
770
772
773 if ( this->select( tidavertices, vtx_name ) ) chain.back().addVertices( tidavertices );
774 }
775
776
777 delete roiInfo;
778
779 }
780 else {
781
783
784 //std::string roi_key = m_chainNames[ichain].roi();
785
787
789
791
793
794 int leg = -1;
795
796 if ( chainConfig.element()!="" ) {
797 leg = std::atoi(chainConfig.element().c_str());
798 }
799
803 roi_key,
805 "roi",
806 leg ) );
807
808 // const unsigned int featureCollectionMode = const std::string& navElementLinkKey = "roi") const;
809
810 int iroi = 0;
811
813
814 iroi++;
815
819
820 if ( roi_key=="SuperRoi" && iroi>1 ) continue;
821
822 // std::cout << "\troi: get link " << roi_key << " ..." << std::endl;
823
825
827 if ( roi_key!="" && roi_link.dataID()!=roi_key ) continue;
828
829 const TrigRoiDescriptor* const* roiptr = roi_link.cptr();
830
831 if ( roiptr == 0 ) {
832 continue;
833 }
834
835 // std::cout << "\troi: link deref ..." << *roiptr << std::endl;
836
837 if (m_provider->msg().level() <= MSG::VERBOSE) {
838 m_provider->msg(MSG::VERBOSE) << " RoI descriptor for seeded chain " << chainname << " " << **roiptr << endmsg;
839 }
840
842
843 // if ( dbg ) std::cout << "\troi " << iroi << " " << *roiInfo << std::endl;
844
846
847 m_selectorTest->clear();
848
850
851 // beamspot stuff not needed for xAOD::TrackParticles
852
854
855 chain.addRoi( *roiInfo );
856
858
860
861 chain.back().addTracks(testtracks);
862
863
865
866 if ( vtx_name!="" ) {
867
869
871
872 chain.back().addVertices( tidavertices );
873
874 }
875
876
877#if 0
878 if ( dbg ) {
879 std::cout << "\tTIDA analysis for chain: " << chainname << "\t key: " << key << "\t" << **roiptr << std::endl;
880 std::cout << "\tcollections: " << chain.back() << std::endl;
881 }
882#endif
883
884 delete roiInfo;
885
886 }
887
888
889 }
890
891 } // end of loop chainNames vector loop
892
893
894 if ( m_provider->msg().level() <= MSG::VERBOSE ) {
895 m_provider->msg(MSG::VERBOSE) << "event: " << *m_event << endmsg;
896 }
897
898 }
899
900 // close previous loop over chains and open new one
901
902 for ( unsigned ichain=0 ; ichain<m_event->size() ; ichain++ ) {
903
904 TIDA::Chain& chain = (*m_event)[ichain];
906 const std::string& vtx_name = chainConfig.vtx();
907
908 // skip tag chains to avoid performing standard analysis on them (done for tnp at the same time as probes)
909 if ( TnP_flag && chainConfig.extra().find("_tag")!=std::string::npos ) continue ;
910
912
913 if (TnP_flag) {
915 // needs to be done AFTER retrieving offline tracks as m_selectorRef passed as arguement, hence restructuring
916 }
917 else {
918 rois.reserve( chain.size() );
919 for ( size_t ir=0 ; ir<chain.size() ; ir++ ) {
920 rois.push_back( &(chain.rois()[ir]) );
921 }
922 }
923
924 // now loop over the rois (again)
925
926 for ( unsigned iroi=0 ; iroi<rois.size() ; iroi++ ) {
927
928 if ( this->filterOnRoi() ) {
929 filterRef.setRoi( &(rois.at(iroi)->roi() ) );
930 filterRef.containtracks( m_containTracks );
931 }
932 else filterRef.setRoi( 0 );
933
934 test_tracks.clear();
935
936 // this block is before the track retrieval in the original, is it working the same here?
937
951
952 if ( m_provider->msg().level() <= MSG::VERBOSE )
953 m_provider->msg(MSG::VERBOSE) << "MC Truth flag " << m_mcTruth << endmsg;
954
955 if ( !m_doOffline && m_mcTruth ) {
956 if ( this->filterOnRoi() ) filter_truth.setRoi( &(rois.at(iroi)->roi() ) );
958 }
959 else { // ie. if ( m_doOffline )
960 ref_tracks = m_selectorRef->tracks(&filterRef) ;
961 }
962
963 if ( m_provider->msg().level() <= MSG::VERBOSE ) {
964 m_provider->msg(MSG::VERBOSE) << "ref tracks.size() " << m_selectorRef->tracks().size() << endmsg;
965 for ( int ii=m_selectorRef->tracks().size() ; ii-- ; ) {
966 m_provider->msg(MSG::VERBOSE) << " ref track " << ii << " " << *m_selectorRef->tracks()[ii] << endmsg;
967 }
968 }
969
970 test_tracks.clear();
971
972
973 for ( unsigned itrk=0 ; itrk<rois.at(iroi)->tracks().size() ; itrk++ ) {
974 test_tracks.push_back(&(rois.at(iroi)->tracks().at(itrk)));
975 }
976
977 // std::cout << "sutt track multiplicities: offline " << offline_tracks.size() << "\ttest " << test_tracks.size() << std::endl;
978
979 _analysis->setvertices( vertices.size() );
980
981 if ( refbeamspot.size()>0 ) _analysis->setBeamRef( refbeamspot );
982 if ( testbeamspot.size()>0 ) _analysis->setBeamTest( testbeamspot );
983
986
987 if ( m_runPurity ) {
988
989 if ( this->getUseHighestPT() ) HighestPTOnly( test_tracks );
990
992
994 m_NRois++;
995 m_NRefTracks += test_tracks.size();
996 m_NTestTracks += ref_tracks.size();
997
998
1001
1003
1004 }
1005 else {
1006
1008 if ( this->getUseHighestPT() ) HighestPTOnly( ref_tracks );
1009
1011
1013
1015 m_NRois++;
1016 m_NRefTracks += ref_tracks.size();
1017 m_NTestTracks += test_tracks.size();
1018
1021
1022 _analysis->setroi( &rois.at(iroi)->roi() );
1024
1025 if ( vtx_name!="" ) {
1027 std::vector<TIDA::Vertex> vr = rois.at(iroi)->vertices();
1029 for ( unsigned iv=0 ; iv<vr.size() ; iv++ ) vtx_rec.push_back( &vr[iv] );
1030
1032 if ( this->getVtxIndex()<0 ) {
1033 for ( unsigned iv=0 ; iv<vertices.size() ; iv++ ) vtx.push_back( &vertices[iv] );
1034 }
1035 else {
1036 if ( vertices.size()>unsigned(this->getVtxIndex()) ) vtx.push_back( &vertices[this->getVtxIndex()] );
1037 }
1038
1039 _analysis->execute_vtx( vtx, vtx_rec, m_event );
1040 }
1041
1042 }
1043
1044 if ( _analysis->debug() ) {
1045 m_provider->msg(MSG::INFO) << "Missing track for " << m_chainNames[ichain]
1046 << "\trun " << run_number
1047 << "\tevent " << event_number
1048 << "\tlb " << lumi_block << endmsg;
1049 }
1050
1051 }
1052
1053 }
1054
1055 if ( m_provider->msg().level() <= MSG::VERBOSE ) {
1056 m_provider->msg(MSG::VERBOSE) << "\n\nEvent " << *m_event << endmsg;
1057 }
1058 }
bool passed(DecisionID id, const DecisionIDContainer &)
checks if required decision ID is in the set of IDs in the container
size_t size() const
Number of registered mappings.
void HighestPTOnly(std::vector< T * > &tracks)
Definition TIDATools.h:20
void FilterPT(std::vector< T * > &tracks, double pt)
Definition TIDATools.h:41
TrigTrackSelector * m_selectorTest
bool selectTracks(TrigTrackSelector *selector, const ElementLink< TrigRoiDescriptorCollection > &roi_link, const std::string &key="")
TrigTrackSelector * m_selectorRef
std::vector< double > getBeamspot(const std::string &key)
TrackAssociator * m_associator
bool select(std::vector< TIDA::Vertex > &vertices, xAOD::VertexContainer::const_iterator vtx_start, xAOD::VertexContainer::const_iterator vtx_end)
int signal_process_id(const GenEvent &evt)
Definition GenEvent.h:572

◆ mcTruth()

bool T_AnalysisConfig< T >::mcTruth ( ) const
inlineinherited

Definition at line 220 of file T_AnalysisConfig.h.

220{ return m_mcTruth; }

◆ monTool()

template<typename T, typename A = Analysis_Tier0>
ToolHandle< GenericMonitoringTool > * T_AnalysisConfigMT_Tier0< T, A >::monTool ( )
inlineprotected

Definition at line 1097 of file T_AnalysisConfigMT_Tier0.h.

1097{ return m_monTool; }

◆ name()

const std::string & T_AnalysisConfig< T >::name ( ) const
inlineinherited

Definition at line 194 of file T_AnalysisConfig.h.

std::string m_analysisInstanceName

◆ processElectrons()

unsigned T_AnalysisConfig< T >::processElectrons ( TrigTrackSelector & selectorRef,
std::vector< TrackTrigObject > * elevec = 0,
const unsigned int selection = 0,
bool raw_track = false,
double ETOffline = 0,
const std::string & containerName = "ElectronAODCollection" )
inlineprotectedinherited

select offline electrons

Definition at line 659 of file T_AnalysisConfig.h.

669 {
670
671 m_provider->msg(MSG::DEBUG) << "Fetching offline electrons: " << containerName << endmsg;
672
673 selectorRef.clear();
674
675# ifdef XAODTRACKING_TRACKPARTICLE_H
677# else
679# endif
680
681
682 const Container* container = 0;
683
684 if( ! m_provider->evtStore()->template contains<Container>(containerName) ) {
685 m_provider->msg(MSG::WARNING) << "Error No Electron Container " << containerName << " !" << endmsg;
686 return 0;
687 }
688
690 if( sc.isFailure() || !container ) {
691 m_provider->msg(MSG::WARNING) << "Error retrieving container: " << containerName << " !" << endmsg;
692 return 0;
693 }
694
695 m_provider->msg(MSG::DEBUG) << "Event with " << container->size() << " Electron object(s) " << endmsg;
696
699
700 for( ; elec!=elec_end ; ++elec ){
701 //m_provider->msg(MSG::DEBUG) << " Electron " << (*elec)
702 // << ", eta " << (*elec)->eta()
703 // << ", phi " << (*elec)->phi()
704 // << ", ET " << (*elec)->pt()
705 // << ", author " << (*elec)->author()
706 // << ", trackParticle " << (*elec)->trackParticle()
707 // << ", conversion " << (*elec)->conversion()
708 // << ", mediumPP " << ((*elec)->isem(egammaPID::ElectronMediumPP)==0)
709 // << endmsg;
710
711 bool good_electron = false;
712# ifdef XAODTRACKING_TRACKPARTICLE_H
714# else
716# endif
717
718 if (good_electron) {
719 const xAOD::Electron_v1& eleduff = *(*elec);
720 long unsigned eleid = (unsigned long)(&eleduff) ;
721 TrackTrigObject eleobj = TrackTrigObject( (*elec)->eta(),
722 (*elec)->phi(),
723 (*elec)->pt(),
724 0,
725 (*elec)->type(),
726 eleid );
727
728 bool trk_added ;
730 else trk_added = selectorRef.selectTrack( (*elec)->trackParticle() );
731
732 if (trk_added) eleobj.addChild( selectorRef.tracks().back()->id() );
733 if (elevec) elevec->push_back( eleobj );
734 }
735 }
736
737 return selectorRef.tracks().size();
738 }
bool isGoodOffline(const Analysis::Electron &elec)

◆ processMuons()

unsigned T_AnalysisConfig< T >::processMuons ( TrigTrackSelector & selectorRef,
const unsigned int selection = 0,
double ETOffline = 0,
const std::string & containerName = "StacoMuonCollection" )
inlineprotectedinherited

select offlinqe muons

Definition at line 745 of file T_AnalysisConfig.h.

752 {
753
754# ifdef XAODTRACKING_TRACKPARTICLE_H
756# else
758# endif
759
760 m_provider->msg(MSG::DEBUG) << " Offline muons (" << containerName << ")" << endmsg;
761
762 selectorRef.clear();
763
764 const Container* container = 0;
765
766 if( ! m_provider->evtStore()->template contains<Container>(containerName) ) {
767 m_provider->msg(MSG::WARNING) << "Error No MuonCollection" << containerName << " !" << endmsg;
768 return 0;
769 }
770
772 if( sc.isFailure() || !container ) {
773 m_provider->msg(MSG::WARNING) << "Error retrieving " << containerName << " !" << endmsg;
774 return 0;
775 }
776
777 auto muon = container->begin();
778 auto muon_end = container->end();
779
780 // std::cout << "SUTT Offline muons " << container->size() << "\t threshold " << ETOffline << std::endl;
781
782 for( ; muon!=muon_end ; ++muon ){
783# ifdef XAODTRACKING_TRACKPARTICLE_H
785# else
786 if ( TIDA::isGoodOffline(*(*muon)) ) selectorRef.selectTrack((*muon)->inDetTrackParticle());
787# endif
788 }
789
790
791 // std::cout << "SUTT found " << selectorRef.tracks().size() << " muons for " << containerName << std::endl;
792 m_provider->msg(MSG::DEBUG) << "found " << selectorRef.tracks().size() << " muons for " << containerName << endmsg;
793
794 return selectorRef.tracks().size();
795}

◆ processTaus()

unsigned T_AnalysisConfig< T >::processTaus ( TrigTrackSelector & selectorRef,
std::vector< TrackTrigObject > * tauvec = 0,
const unsigned selection = 0,
int requireNtracks = 0,
double EtCutOffline = 0,
const std::string & containerName = "TauJets" )
inlineprotectedinherited

select offline taus

Definition at line 802 of file T_AnalysisConfig.h.

808 {
809
811
812 selectorRef.clear();
813
814 const Container* container = 0;
815
816 selectorRef.clear();
817
818 m_provider->msg(MSG::DEBUG) << " Offline taus " << containerName << endmsg;
819
820 if ( !m_provider->evtStore()->template contains<Container>(containerName)) {
821 m_provider->msg(MSG::WARNING) << " Offline taus not found" << endmsg;
822 return 0;
823 }
824
826 if (sc != StatusCode::SUCCESS) {
827 m_provider->msg(MSG::WARNING) << " Offline tau retrieval not successful" << endmsg;
828 return 0;
829 }
830
833
834
835 for ( ; tau!=tau_end ; ++tau ) {
836
837# ifndef XAODTAU_VERSIONS_TAUJET_V3_H
838 int N = (*tau)->nTracks();
839 // std::cout << "SUTT no tau detail " << N << "\t3prong: " << doThreeProng << std::endl;
840# else
841 int N=0;
842 (*tau)->detail( xAOD::TauJetParameters::nChargedTracks, N );
843 // std::cout << "SUTT tau detail: N " << N << "\t3prong: " << doThreeProng << std::endl;
844# endif
845
846 bool good_tau = false;
848
849 // std::cout << "SUTT tau ntracks: " << N << "\tgoodtau: " << good_tau << "\tpt: " << (*tau)->p4().Et() << "\t3prong: " << doThreeProng << std::endl;
850
851 if (good_tau){
852 const xAOD::TauJet_v3& duff = *(*tau);
853 long unsigned tauid = (unsigned long)(&duff) ;
854 TrackTrigObject tauobj = TrackTrigObject( (*tau)->eta(),
855 (*tau)->phi(),
856 (*tau)->pt(),
857 0,
858 (*tau)->type(),
859 tauid );
860
861 bool trk_added = false;
862
863 for ( unsigned i=N ; i-- ; ) {
864# ifdef XAODTAU_TAUTRACK_H
865
866 std::vector< ElementLink<xAOD::TrackParticleContainer> > alink = (*tau)->track(i)->trackLinks();
867
868 trk_added = false;
869
870 for ( size_t ilink=0 ; ilink<alink.size() ; ilink++ ) {
871 if ( alink[ilink].isValid() ) trk_added = selectorRef.selectTrack((*alink[ilink]));
872 }
874 // trk_added = selectorRef.selectTrack((*tau)->track(i)->track());
876# else
877 trk_added = selectorRef.selectTrack((*tau)->track(i));
878# endif
879 if ( trk_added ) tauobj.addChild( selectorRef.tracks().back()->id() );
880 }
881 if ( tauvec ) tauvec->push_back( tauobj );
882 }
883 }
884
885 return selectorRef.tracks().size();
886
887}

◆ referenceChains()

const std::string T_AnalysisConfig< T >::referenceChains ( ) const
inlineinherited

Definition at line 203 of file T_AnalysisConfig.h.

203 {
205 for(unsigned int i=0; i<m_chainNames[1].size(); i++)
206 name += (m_chainNames[1][i]+"::"+m_types[1][i]+"::"+m_keys[1][i]+" ");
207 return name;
208 }

◆ releaseData()

const std::string & T_AnalysisConfig< T >::releaseData ( ) const
inlineinherited

Definition at line 232 of file T_AnalysisConfig.h.

232{ return m_releaseData; }

◆ requireDecision()

bool T_AnalysisConfig< T >::requireDecision ( ) const
inlineinherited

Definition at line 247 of file T_AnalysisConfig.h.

◆ retrieve()

StatusCode T_AnalysisConfig< T >::retrieve ( Collection const *& collection,
const std::string & key = "" )
inlineprotectedinherited

old implementation - leave in place until after the full validation ... return m_provider->evtStore()->retrieve( container, containerName);

commented code intentionally left for development purposes ... std::cout << "\t\t\t T_AnalysisConfig::selectTracks() - > TrackSelector" << std::endl;

Definition at line 529 of file T_AnalysisConfig.h.

529 {
532 if ( m_provider->evtStore()->template contains<Collection>( key ) ) {
534 if ( handle.isValid() ) {
537 collection = handle.cptr();
538 return StatusCode::SUCCESS;
539 }
540 }
541 return StatusCode::FAILURE;
542 }

◆ select()

bool T_AnalysisConfig< T >::select ( std::vector< TIDA::Vertex > & vertices,
xAOD::VertexContainer::const_iterator vtx_start,
xAOD::VertexContainer::const_iterator vtx_end )
inlineprotectedinherited

variances

quality

Definition at line 301 of file T_AnalysisConfig.h.

303 {
304
306
307 for ( ; vtxitr!=vtx_end ; ++vtxitr ) {
308 if ( (*vtxitr)->vertexType()!=0 ) {
309 m_provider->msg(MSG::VERBOSE) << "\tvertex " << (*vtxitr)->z() << endmsg;
310
311 vertices.push_back( TIDA::Vertex( (*vtxitr)->x(),
312 (*vtxitr)->y(),
313 (*vtxitr)->z(),
315 (*vtxitr)->covariancePosition()(Trk::x,Trk::x),
316 (*vtxitr)->covariancePosition()(Trk::y,Trk::y),
317 (*vtxitr)->covariancePosition()(Trk::z,Trk::z),
318 (*vtxitr)->nTrackParticles(),
320 (*vtxitr)->chiSquared(),
321 (*vtxitr)->numberDoF() ) );
322
323 }
324 }
325
326 return true;
327 }

◆ selectionChains()

const std::string T_AnalysisConfig< T >::selectionChains ( ) const
inlineinherited

Definition at line 210 of file T_AnalysisConfig.h.

210 {
212 for(unsigned int i=0; i<m_chainNames[2].size(); i++)
213 name += (m_chainNames[2][i]+"::"+m_types[2][i]+"::"+m_keys[2][i]+" ");
214 return name;
215 }

◆ selectTracks()

bool T_AnalysisConfig< T >::selectTracks ( TrigTrackSelector * selector,
const ElementLink< TrigRoiDescriptorCollection > & roi_link,
const std::string & key = "" )
inlineprotectedinherited

will need this printout for debugging the feature access, so leave this commented until it has been properly debugged, then it can be removed

will not use the te name here, but keep it on just the same for the time being, for subsequent development

Definition at line 400 of file T_AnalysisConfig.h.

403 {
404
405
408 // std::cout << "try " << key << "\t" << m_provider->evtStore()->template transientContains<Collection>(key) << std::endl;
409
414 size_t pos = key_collection.find("/");
415 if ( pos!=std::string::npos ) {
416 key_collection = key.substr( pos+1, key.size()-pos );
417 key_tename = key.substr( 0, pos );
418 }
419
422
424
426 const std::string* keyStr = m_provider->evtStore()->keyToString(roi_link.key(), checkCLID);
427 m_provider->msg(MSG::DEBUG) << "Requesting range over (" << key << ") associated to ROI from " << (keyStr == nullptr ? "UNKNOWN" : *keyStr) << endmsg;
428
429 itrpair = (*m_tdt)->associateToEventView( handle, roi_link );
430
431 if ( itrpair.first != itrpair.second ) {
432 selector->selectTracks( itrpair.first, itrpair.second );
433 return true;
434 }
435 else {
436 m_provider->msg(MSG::DEBUG) << "TDT TrackFeature collection (" << key << ") is empty " << endmsg;
437 return false;
438 }
439 }

◆ selectTracksNotEmpty()

bool T_AnalysisConfig< T >::selectTracksNotEmpty ( TrigTrackSelector * selector,
const std::string & key )
inlineprotectedinherited

Definition at line 564 of file T_AnalysisConfig.h.

564 {
565 const Collection* collection = nullptr;
566 if ( key.empty() ) return false;
567 if ( !m_provider->evtStore()->template contains<Collection>( key ) ) return false;
568
570
571 if ( !( sc.isSuccess() && collection ) ) return false;
572
573 m_provider->msg(MSG::DEBUG) << "SG Collection->size() " << collection->size() << " (" << key << ")" << endmsg;
574
575 // added to fix muon samples bug
576 if ( collection->size() == 0 ) {
577 m_provider->msg(MSG::WARNING) << "no particles in collection" << endmsg;
578 return false;
579 }
580
582 return true;
583 }

◆ set_monTool()

template<typename T, typename A = Analysis_Tier0>
void T_AnalysisConfigMT_Tier0< T, A >::set_monTool ( ToolHandle< GenericMonitoringTool > * m)
inlineprotected

Definition at line 1095 of file T_AnalysisConfigMT_Tier0.h.

1095{ m_monTool=m; }

◆ setBeamX()

void T_AnalysisConfig< T >::setBeamX ( double d)
inlineinherited

Definition at line 222 of file T_AnalysisConfig.h.

222{ m_beamX=d; }

◆ setBeamY()

void T_AnalysisConfig< T >::setBeamY ( double d)
inlineinherited

Definition at line 223 of file T_AnalysisConfig.h.

223{ m_beamY=d; }

◆ setBeamZ()

void T_AnalysisConfig< T >::setBeamZ ( double d)
inlineinherited

Definition at line 224 of file T_AnalysisConfig.h.

224{ m_beamZ=d; }

◆ setFilterOnRoi()

bool T_AnalysisConfig< T >::setFilterOnRoi ( bool b)
inlineinherited

Definition at line 244 of file T_AnalysisConfig.h.

244{ return m_filterOnRoi=b; }

◆ setGenericFlag()

void T_AnalysisConfig< T >::setGenericFlag ( bool b)
inlineinherited

Definition at line 230 of file T_AnalysisConfig.h.

230{ m_genericFlag=b; }

◆ setMCTruth()

void T_AnalysisConfig< T >::setMCTruth ( bool b = true)
inlineinherited

Definition at line 219 of file T_AnalysisConfig.h.

219{ m_mcTruth=b; }

◆ setRequireDecision()

void T_AnalysisConfig< T >::setRequireDecision ( bool b)
inlineinherited

Definition at line 246 of file T_AnalysisConfig.h.

◆ setRunPurity()

template<typename T, typename A = Analysis_Tier0>
void T_AnalysisConfigMT_Tier0< T, A >::setRunPurity ( bool b)
inline

Definition at line 161 of file T_AnalysisConfigMT_Tier0.h.

161{ m_runPurity=b; }

◆ setShifter()

template<typename T, typename A = Analysis_Tier0>
void T_AnalysisConfigMT_Tier0< T, A >::setShifter ( bool b)
inline

Definition at line 163 of file T_AnalysisConfigMT_Tier0.h.

163{ m_shifter=b; }

◆ setUseHighestPT()

void T_AnalysisConfig< T >::setUseHighestPT ( bool b)
inlineinherited

Definition at line 237 of file T_AnalysisConfig.h.

237{ m_useHighestPT=b; }

◆ setVtxIndex()

void T_AnalysisConfig< T >::setVtxIndex ( int i)
inlineinherited

Definition at line 240 of file T_AnalysisConfig.h.

240{ m_vtxIndex=i; }

◆ testChains()

const std::string T_AnalysisConfig< T >::testChains ( ) const
inlineinherited

Definition at line 196 of file T_AnalysisConfig.h.

196 {
198 for(unsigned int i=0; i<m_chainNames[0].size(); i++)
199 name += (m_chainNames[0][i]+"::"+m_types[0][i]+"::"+m_keys[0][i]+" ");
200 return name;
201 }

◆ useBeamCondSvc()

template<typename T, typename A = Analysis_Tier0>
void T_AnalysisConfigMT_Tier0< T, A >::useBeamCondSvc ( bool b)
inline

Definition at line 165 of file T_AnalysisConfigMT_Tier0.h.

165{ m_useBeamCondSvc = b; }

Member Data Documentation

◆ _analysis

template<typename T, typename A = Analysis_Tier0>
A* T_AnalysisConfigMT_Tier0< T, A >::_analysis

Definition at line 171 of file T_AnalysisConfigMT_Tier0.h.

◆ m_analyses

template<typename T, typename A = Analysis_Tier0>
std::vector<A*> T_AnalysisConfigMT_Tier0< T, A >::m_analyses
protected

Definition at line 1106 of file T_AnalysisConfigMT_Tier0.h.

◆ m_analysis

TrackAnalysis* T_AnalysisConfig< T >::m_analysis
protectedinherited

Definition at line 921 of file T_AnalysisConfig.h.

◆ m_analysisInstanceName

std::string T_AnalysisConfig< T >::m_analysisInstanceName
protectedinherited

Definition at line 901 of file T_AnalysisConfig.h.

◆ m_associator

TrackAssociator* T_AnalysisConfig< T >::m_associator
protectedinherited

Definition at line 920 of file T_AnalysisConfig.h.

◆ m_beamX

double T_AnalysisConfig< T >::m_beamX
protectedinherited

Definition at line 925 of file T_AnalysisConfig.h.

◆ m_beamY

double T_AnalysisConfig< T >::m_beamY
protectedinherited

Definition at line 925 of file T_AnalysisConfig.h.

◆ m_beamZ

double T_AnalysisConfig< T >::m_beamZ
protectedinherited

Definition at line 925 of file T_AnalysisConfig.h.

◆ m_chainNames

template<typename T, typename A = Analysis_Tier0>
std::vector<ChainString> T_AnalysisConfigMT_Tier0< T, A >::m_chainNames
protected

Definition at line 1105 of file T_AnalysisConfigMT_Tier0.h.

◆ m_containTracks

template<typename T, typename A = Analysis_Tier0>
bool T_AnalysisConfigMT_Tier0< T, A >::m_containTracks
protected

Definition at line 1133 of file T_AnalysisConfigMT_Tier0.h.

◆ m_doBjets

template<typename T, typename A = Analysis_Tier0>
bool T_AnalysisConfigMT_Tier0< T, A >::m_doBjets
protected

Definition at line 1113 of file T_AnalysisConfigMT_Tier0.h.

◆ m_doElectrons

template<typename T, typename A = Analysis_Tier0>
bool T_AnalysisConfigMT_Tier0< T, A >::m_doElectrons
protected

Definition at line 1111 of file T_AnalysisConfigMT_Tier0.h.

◆ m_doMuons

template<typename T, typename A = Analysis_Tier0>
bool T_AnalysisConfigMT_Tier0< T, A >::m_doMuons
protected

Definition at line 1110 of file T_AnalysisConfigMT_Tier0.h.

◆ m_doOffline

template<typename T, typename A = Analysis_Tier0>
bool T_AnalysisConfigMT_Tier0< T, A >::m_doOffline
protected

Definition at line 1109 of file T_AnalysisConfigMT_Tier0.h.

◆ m_doTaus

template<typename T, typename A = Analysis_Tier0>
bool T_AnalysisConfigMT_Tier0< T, A >::m_doTaus
protected

Definition at line 1112 of file T_AnalysisConfigMT_Tier0.h.

◆ m_doTauThreeProng

template<typename T, typename A = Analysis_Tier0>
bool T_AnalysisConfigMT_Tier0< T, A >::m_doTauThreeProng
protected

Definition at line 1115 of file T_AnalysisConfigMT_Tier0.h.

◆ m_event

template<typename T, typename A = Analysis_Tier0>
TIDA::Event* T_AnalysisConfigMT_Tier0< T, A >::m_event
protected

Definition at line 1103 of file T_AnalysisConfigMT_Tier0.h.

◆ m_filterOnRoi

bool T_AnalysisConfig< T >::m_filterOnRoi
protectedinherited

Definition at line 936 of file T_AnalysisConfig.h.

◆ m_filters

std::vector< std::vector<TrackFilter*> > T_AnalysisConfig< T >::m_filters
protectedinherited

Definition at line 908 of file T_AnalysisConfig.h.

◆ m_first

template<typename T, typename A = Analysis_Tier0>
bool T_AnalysisConfigMT_Tier0< T, A >::m_first
protected

Definition at line 1131 of file T_AnalysisConfigMT_Tier0.h.

◆ m_genericFlag

int T_AnalysisConfig< T >::m_genericFlag
protectedinherited

Definition at line 927 of file T_AnalysisConfig.h.

◆ m_hasTruthMap

template<typename T, typename A = Analysis_Tier0>
bool T_AnalysisConfigMT_Tier0< T, A >::m_hasTruthMap
protected

Definition at line 1114 of file T_AnalysisConfigMT_Tier0.h.

◆ m_invmass

template<typename T, typename A = Analysis_Tier0>
TH1F* T_AnalysisConfigMT_Tier0< T, A >::m_invmass
protected

Definition at line 1137 of file T_AnalysisConfigMT_Tier0.h.

◆ m_invmass_obj

template<typename T, typename A = Analysis_Tier0>
TH1F* T_AnalysisConfigMT_Tier0< T, A >::m_invmass_obj
protected

Definition at line 1138 of file T_AnalysisConfigMT_Tier0.h.

◆ m_keepAllEvents

bool T_AnalysisConfig< T >::m_keepAllEvents
protectedinherited

Definition at line 930 of file T_AnalysisConfig.h.

◆ m_keys

std::vector< std::vector<std::string> > T_AnalysisConfig< T >::m_keys
protectedinherited

Definition at line 906 of file T_AnalysisConfig.h.

◆ m_mcTruth

bool T_AnalysisConfig< T >::m_mcTruth
protectedinherited

Definition at line 923 of file T_AnalysisConfig.h.

◆ m_monTool

template<typename T, typename A = Analysis_Tier0>
ToolHandle<GenericMonitoringTool>* T_AnalysisConfigMT_Tier0< T, A >::m_monTool
protected

Definition at line 1140 of file T_AnalysisConfigMT_Tier0.h.

◆ m_NRefTracks

template<typename T, typename A = Analysis_Tier0>
int T_AnalysisConfigMT_Tier0< T, A >::m_NRefTracks
protected

Definition at line 1122 of file T_AnalysisConfigMT_Tier0.h.

◆ m_NRois

template<typename T, typename A = Analysis_Tier0>
int T_AnalysisConfigMT_Tier0< T, A >::m_NRois
protected

output stats

Definition at line 1121 of file T_AnalysisConfigMT_Tier0.h.

◆ m_NTestTracks

template<typename T, typename A = Analysis_Tier0>
int T_AnalysisConfigMT_Tier0< T, A >::m_NTestTracks
protected

Definition at line 1123 of file T_AnalysisConfigMT_Tier0.h.

◆ m_outputFileName

template<typename T, typename A = Analysis_Tier0>
std::string T_AnalysisConfigMT_Tier0< T, A >::m_outputFileName
protected

Definition at line 1118 of file T_AnalysisConfigMT_Tier0.h.

◆ m_provider

T* T_AnalysisConfig< T >::m_provider
protectedinherited

Definition at line 893 of file T_AnalysisConfig.h.

◆ m_pTthreshold

template<typename T, typename A = Analysis_Tier0>
double T_AnalysisConfigMT_Tier0< T, A >::m_pTthreshold
protected

Definition at line 1129 of file T_AnalysisConfigMT_Tier0.h.

◆ m_refChainKey

std::string T_AnalysisConfig< T >::m_refChainKey
protectedinherited

Definition at line 911 of file T_AnalysisConfig.h.

◆ m_refChainName

std::string T_AnalysisConfig< T >::m_refChainName
protectedinherited

Definition at line 910 of file T_AnalysisConfig.h.

◆ m_releaseData

std::string T_AnalysisConfig< T >::m_releaseData
protectedinherited

Definition at line 928 of file T_AnalysisConfig.h.

◆ m_requireDecision

bool T_AnalysisConfig< T >::m_requireDecision
protectedinherited

Definition at line 938 of file T_AnalysisConfig.h.

◆ m_runPurity

template<typename T, typename A = Analysis_Tier0>
bool T_AnalysisConfigMT_Tier0< T, A >::m_runPurity
protected

Definition at line 1125 of file T_AnalysisConfigMT_Tier0.h.

◆ m_selectorRef

TrigTrackSelector* T_AnalysisConfig< T >::m_selectorRef
protectedinherited

Definition at line 916 of file T_AnalysisConfig.h.

◆ m_selectorSel

TrigTrackSelector* T_AnalysisConfig< T >::m_selectorSel
protectedinherited

Definition at line 918 of file T_AnalysisConfig.h.

◆ m_selectorTest

TrigTrackSelector* T_AnalysisConfig< T >::m_selectorTest
protectedinherited

Definition at line 917 of file T_AnalysisConfig.h.

◆ m_shifter

template<typename T, typename A = Analysis_Tier0>
bool T_AnalysisConfigMT_Tier0< T, A >::m_shifter
protected

Definition at line 1127 of file T_AnalysisConfigMT_Tier0.h.

◆ m_tauEtCutOffline

template<typename T, typename A = Analysis_Tier0>
bool T_AnalysisConfigMT_Tier0< T, A >::m_tauEtCutOffline
protected

Definition at line 1116 of file T_AnalysisConfigMT_Tier0.h.

◆ m_tdt

ToolHandle<Trig::TrigDecisionTool>* T_AnalysisConfig< T >::m_tdt
protectedinherited

Definition at line 895 of file T_AnalysisConfig.h.

◆ m_testChainKey

std::string T_AnalysisConfig< T >::m_testChainKey
protectedinherited

Definition at line 914 of file T_AnalysisConfig.h.

◆ m_testChainName

std::string T_AnalysisConfig< T >::m_testChainName
protectedinherited

Definition at line 913 of file T_AnalysisConfig.h.

◆ m_testType

template<typename T, typename A = Analysis_Tier0>
std::string T_AnalysisConfigMT_Tier0< T, A >::m_testType
protected

Definition at line 1107 of file T_AnalysisConfigMT_Tier0.h.

◆ m_TnP_tool

template<typename T, typename A = Analysis_Tier0>
TagNProbe* T_AnalysisConfigMT_Tier0< T, A >::m_TnP_tool
protected

Definition at line 1135 of file T_AnalysisConfigMT_Tier0.h.

◆ m_types

std::vector< std::vector<std::string> > T_AnalysisConfig< T >::m_types
protectedinherited

Definition at line 905 of file T_AnalysisConfig.h.

◆ m_useBeamCondSvc

template<typename T, typename A = Analysis_Tier0>
bool T_AnalysisConfigMT_Tier0< T, A >::m_useBeamCondSvc
protected

Definition at line 1101 of file T_AnalysisConfigMT_Tier0.h.

◆ m_useHighestPT

bool T_AnalysisConfig< T >::m_useHighestPT
protectedinherited

Definition at line 932 of file T_AnalysisConfig.h.

◆ m_vtxIndex

int T_AnalysisConfig< T >::m_vtxIndex
protectedinherited

Definition at line 934 of file T_AnalysisConfig.h.


The documentation for this class was generated from the following file: