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::string m_refChainName
std::string m_refChainKey
std::string m_testChainName
std::string m_testChainKey
std::vector< std::vector< TrackFilter * > > m_filters
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 90 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 100 of file T_AnalysisConfigMT_Tier0.h.

106 :
112 analysis),
113 _analysis(0),
114 m_useBeamCondSvc(false),
115 m_doOffline(true),
116 m_doMuons(false),
117 m_doElectrons(false),
118 m_doTaus(false),
119 m_doBjets(false),
120 m_hasTruthMap(false),
121 m_doTauThreeProng(false),
122 m_tauEtCutOffline(false),
123 m_NRois(0),
124 m_NRefTracks(0),
125 m_NTestTracks(0),
126 m_runPurity(false),
127 m_shifter(false),
128 m_pTthreshold(0),
129 m_first(true),
130 m_containTracks(false),
132 m_invmass(0),
133 m_invmass_obj(0),
134 m_monTool(0)
135 {
137 m_event = new TIDA::Event();
138 m_chainNames.push_back(testChainName);
139
140#if 0
141 ChainString& chain = m_chainNames.back();
142
143 std::cout << "\nT_AnalysisConfigMT_Tier0::name: " << name() << "\t" << this << std::endl;
144 std::cout << "T_AnalysisConfigMT_Tier0::chain specification: " << testChainName << " -> " << chain << "\t" << chain.raw() << std::endl;
145 std::cout << "\tchain: " << chain.head() << std::endl;
146 std::cout << "\tkey: " << chain.tail() << std::endl;
147 std::cout << "\troi: " << chain.roi() << std::endl;
148 std::cout << "\tvtx: " << chain.vtx() << std::endl;
149 std::cout << "\tte: " << chain.element() << std::endl;
150
151 std::cout << "\tpost: " << chain.post() << std::endl;
152 std::cout << "\tpt: " << chain.postvalue("pt") << std::endl;
153
154 std::cout << "\tcontainTracks: " << m_containTracks << std::endl;
155#endif
156
158 }
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 160 of file T_AnalysisConfigMT_Tier0.h.

160 {
161 delete m_event;
162 if ( m_TnP_tool != 0 ) delete m_TnP_tool ;
163 }

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 201 of file T_AnalysisConfig.h.

201 {
202 m_chainNames[1].push_back(chainName); m_types[1].push_back(type); m_keys[1].push_back(key);
203 }
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 210 of file T_AnalysisConfig.h.

210{ 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 205 of file T_AnalysisConfig.h.

205 {
206 m_chainNames[2].push_back(chainName); m_types[2].push_back(type); m_keys[2].push_back(key);
207 }

◆ addSelectionFilter()

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

Definition at line 211 of file T_AnalysisConfig.h.

211{ 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 197 of file T_AnalysisConfig.h.

197 {
198 m_chainNames[0].push_back(chainName); m_types[0].push_back(type); m_keys[0].push_back(key);
199 }

◆ addTestFilter()

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

Definition at line 209 of file T_AnalysisConfig.h.

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

◆ analysis()

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

Definition at line 256 of file T_AnalysisConfig.h.

256{return m_analysis;}
TrackAnalysis * m_analysis

◆ beamX()

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

Definition at line 264 of file T_AnalysisConfig.h.

264{ return m_beamX; }

◆ beamY()

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

Definition at line 265 of file T_AnalysisConfig.h.

265{ return m_beamY; }

◆ beamZ()

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

Definition at line 266 of file T_AnalysisConfig.h.

266{ 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 1066 of file T_AnalysisConfigMT_Tier0.h.

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

◆ containTracks()

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

Definition at line 171 of file T_AnalysisConfigMT_Tier0.h.

171{ m_containTracks = b; }

◆ execute()

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

Definition at line 223 of file T_AnalysisConfig.h.

223 {
224 if ( !m_provider ) std::cerr << "ERROR T_AnalysisConfig::execute() called without initialising" << std::endl;
225 loop();
226 }
virtual void loop()=0

◆ filterOnRoi()

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

Definition at line 282 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 1078 of file T_AnalysisConfigMT_Tier0.h.

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

◆ genericFlag()

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

Definition at line 268 of file T_AnalysisConfig.h.

◆ getBeamspot()

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

Definition at line 629 of file T_AnalysisConfig.h.

629 {
630 const Collection* collection = 0;
632
633 if ( key!="" ) {
634 if ( m_provider->evtStore()->template contains<Collection>( key ) ) {
636 if( sc.isSuccess() && collection ) {
637 m_provider->msg(MSG::DEBUG) << "SG Collection->size() " << collection->size() << " (" << key << ")" << endmsg;
638
641 if ( trackitr!=trackend ) {
642 v.resize(3);
643 v[0] = (*trackitr)->vx();
644 v[1] = (*trackitr)->vy();
645 v[2] = (*trackitr)->vz();
646 return v;
647 } // only need to look at the first track
648 }
649 }
650 }
651 return v;
652 }
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 297 of file T_AnalysisConfig.h.

298 {
299
302 // std::cout << "try " << key << "\t" << m_provider->evtStore()->template transientContains<Collection>(key) << std::endl;
303
308 size_t pos = key_collection.find("/");
309 if ( pos!=std::string::npos ) {
310 key_collection = key.substr( pos+1, key.size()-pos );
311 key_tename = key.substr( 0, pos );
312 }
313
316
318
320 const std::string* keyStr = m_provider->evtStore()->keyToString(roi_link.key(), checkCLID);
321 m_provider->msg(MSG::DEBUG) << "Requesting range over (" << key << ") associated to ROI from " << (keyStr == nullptr ? "UNKNOWN" : *keyStr) << endmsg;
322
323 itrpair = (*m_tdt)->associateToEventView( handle, roi_link );
324
325 return itrpair;
326 }

◆ getUseHighestPT()

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

Definition at line 277 of file T_AnalysisConfig.h.

◆ getVtxIndex()

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

Definition at line 280 of file T_AnalysisConfig.h.

◆ initialize()

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

Definition at line 214 of file T_AnalysisConfig.h.

214 {
215 m_provider = p;
216 m_tdt = tdt;
217 if ( m_tdt==0 ) m_analysis->initialise();
218
219 }
ToolHandle< Trig::TrigDecisionTool > * m_tdt

◆ keepAllEvents()

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

Definition at line 274 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 192 of file T_AnalysisConfigMT_Tier0.h.

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

259{ return m_mcTruth; }

◆ monTool()

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

Definition at line 1101 of file T_AnalysisConfigMT_Tier0.h.

1101{ return m_monTool; }

◆ name()

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

Definition at line 233 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 698 of file T_AnalysisConfig.h.

708 {
709
710 m_provider->msg(MSG::DEBUG) << "Fetching offline electrons: " << containerName << endmsg;
711
712 selectorRef.clear();
713
714# ifdef XAODTRACKING_TRACKPARTICLE_H
716# else
718# endif
719
720
721 const Container* container = 0;
722
723 if( ! m_provider->evtStore()->template contains<Container>(containerName) ) {
724 m_provider->msg(MSG::WARNING) << "Error No Electron Container " << containerName << " !" << endmsg;
725 return 0;
726 }
727
729 if( sc.isFailure() || !container ) {
730 m_provider->msg(MSG::WARNING) << "Error retrieving container: " << containerName << " !" << endmsg;
731 return 0;
732 }
733
734 m_provider->msg(MSG::DEBUG) << "Event with " << container->size() << " Electron object(s) " << endmsg;
735
738
739 for( ; elec!=elec_end ; ++elec ){
740 //m_provider->msg(MSG::DEBUG) << " Electron " << (*elec)
741 // << ", eta " << (*elec)->eta()
742 // << ", phi " << (*elec)->phi()
743 // << ", ET " << (*elec)->pt()
744 // << ", author " << (*elec)->author()
745 // << ", trackParticle " << (*elec)->trackParticle()
746 // << ", conversion " << (*elec)->conversion()
747 // << ", mediumPP " << ((*elec)->isem(egammaPID::ElectronMediumPP)==0)
748 // << endmsg;
749
750 bool good_electron = false;
751# ifdef XAODTRACKING_TRACKPARTICLE_H
753# else
755# endif
756
757 if (good_electron) {
758 const xAOD::Electron_v1& eleduff = *(*elec);
759 long unsigned eleid = (unsigned long)(&eleduff) ;
760 TrackTrigObject eleobj = TrackTrigObject( (*elec)->eta(),
761 (*elec)->phi(),
762 (*elec)->pt(),
763 0,
764 (*elec)->type(),
765 eleid );
766
767 bool trk_added ;
769 else trk_added = selectorRef.selectTrack( (*elec)->trackParticle() );
770
771 if (trk_added) eleobj.addChild( selectorRef.tracks().back()->id() );
772 if (elevec) elevec->push_back( eleobj );
773 }
774 }
775
776 return selectorRef.tracks().size();
777 }
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 784 of file T_AnalysisConfig.h.

791 {
792
793# ifdef XAODTRACKING_TRACKPARTICLE_H
795# else
797# endif
798
799 m_provider->msg(MSG::DEBUG) << " Offline muons (" << containerName << ")" << endmsg;
800
801 selectorRef.clear();
802
803 const Container* container = 0;
804
805 if( ! m_provider->evtStore()->template contains<Container>(containerName) ) {
806 m_provider->msg(MSG::WARNING) << "Error No MuonCollection" << containerName << " !" << endmsg;
807 return 0;
808 }
809
811 if( sc.isFailure() || !container ) {
812 m_provider->msg(MSG::WARNING) << "Error retrieving " << containerName << " !" << endmsg;
813 return 0;
814 }
815
816 auto muon = container->begin();
817 auto muon_end = container->end();
818
819 // std::cout << "SUTT Offline muons " << container->size() << "\t threshold " << ETOffline << std::endl;
820
821 for( ; muon!=muon_end ; ++muon ){
822# ifdef XAODTRACKING_TRACKPARTICLE_H
824# else
825 if ( TIDA::isGoodOffline(*(*muon)) ) selectorRef.selectTrack((*muon)->inDetTrackParticle());
826# endif
827 }
828
829
830 // std::cout << "SUTT found " << selectorRef.tracks().size() << " muons for " << containerName << std::endl;
831 m_provider->msg(MSG::DEBUG) << "found " << selectorRef.tracks().size() << " muons for " << containerName << endmsg;
832
833 return selectorRef.tracks().size();
834}

◆ 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 841 of file T_AnalysisConfig.h.

847 {
848
850
851 selectorRef.clear();
852
853 const Container* container = 0;
854
855 selectorRef.clear();
856
857 m_provider->msg(MSG::DEBUG) << " Offline taus " << containerName << endmsg;
858
859 if ( !m_provider->evtStore()->template contains<Container>(containerName)) {
860 m_provider->msg(MSG::WARNING) << " Offline taus not found" << endmsg;
861 return 0;
862 }
863
865 if (sc != StatusCode::SUCCESS) {
866 m_provider->msg(MSG::WARNING) << " Offline tau retrieval not successful" << endmsg;
867 return 0;
868 }
869
872
873
874 for ( ; tau!=tau_end ; ++tau ) {
875
876# ifndef XAODTAU_VERSIONS_TAUJET_V3_H
877 int N = (*tau)->nTracks();
878 // std::cout << "SUTT no tau detail " << N << "\t3prong: " << doThreeProng << std::endl;
879# else
880 int N=0;
881 (*tau)->detail( xAOD::TauJetParameters::nChargedTracks, N );
882 // std::cout << "SUTT tau detail: N " << N << "\t3prong: " << doThreeProng << std::endl;
883# endif
884
885 bool good_tau = false;
887
888 // std::cout << "SUTT tau ntracks: " << N << "\tgoodtau: " << good_tau << "\tpt: " << (*tau)->p4().Et() << "\t3prong: " << doThreeProng << std::endl;
889
890 if (good_tau){
891 const xAOD::TauJet_v3& duff = *(*tau);
892 long unsigned tauid = (unsigned long)(&duff) ;
893 TrackTrigObject tauobj = TrackTrigObject( (*tau)->eta(),
894 (*tau)->phi(),
895 (*tau)->pt(),
896 0,
897 (*tau)->type(),
898 tauid );
899
900 bool trk_added = false;
901
902 for ( unsigned i=N ; i-- ; ) {
903# ifdef XAODTAU_TAUTRACK_H
904
905 std::vector< ElementLink<xAOD::TrackParticleContainer> > alink = (*tau)->track(i)->trackLinks();
906
907 trk_added = false;
908
909 for ( size_t ilink=0 ; ilink<alink.size() ; ilink++ ) {
910 if ( alink[ilink].isValid() ) trk_added = selectorRef.selectTrack((*alink[ilink]));
911 }
913 // trk_added = selectorRef.selectTrack((*tau)->track(i)->track());
915# else
916 trk_added = selectorRef.selectTrack((*tau)->track(i));
917# endif
918 if ( trk_added ) tauobj.addChild( selectorRef.tracks().back()->id() );
919 }
920 if ( tauvec ) tauvec->push_back( tauobj );
921 }
922 }
923
924 return selectorRef.tracks().size();
925
926}

◆ referenceChains()

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

Definition at line 242 of file T_AnalysisConfig.h.

242 {
244 for(unsigned int i=0; i<m_chainNames[1].size(); i++)
245 name += (m_chainNames[1][i]+"::"+m_types[1][i]+"::"+m_keys[1][i]+" ");
246 return name;
247 }

◆ releaseData()

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

Definition at line 271 of file T_AnalysisConfig.h.

271{ return m_releaseData; }

◆ requireDecision()

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

Definition at line 286 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 568 of file T_AnalysisConfig.h.

568 {
571 if ( m_provider->evtStore()->template contains<Collection>( key ) ) {
573 if ( handle.isValid() ) {
576 collection = handle.cptr();
577 return StatusCode::SUCCESS;
578 }
579 }
580 return StatusCode::FAILURE;
581 }

◆ 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 340 of file T_AnalysisConfig.h.

342 {
343
345
346 for ( ; vtxitr!=vtx_end ; ++vtxitr ) {
347 if ( (*vtxitr)->vertexType()!=0 ) {
348 m_provider->msg(MSG::VERBOSE) << "\tvertex " << (*vtxitr)->z() << endmsg;
349
350 vertices.push_back( TIDA::Vertex( (*vtxitr)->x(),
351 (*vtxitr)->y(),
352 (*vtxitr)->z(),
354 (*vtxitr)->covariancePosition()(Trk::x,Trk::x),
355 (*vtxitr)->covariancePosition()(Trk::y,Trk::y),
356 (*vtxitr)->covariancePosition()(Trk::z,Trk::z),
357 (*vtxitr)->nTrackParticles(),
359 (*vtxitr)->chiSquared(),
360 (*vtxitr)->numberDoF() ) );
361
362 }
363 }
364
365 return true;
366 }

◆ selectionChains()

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

Definition at line 249 of file T_AnalysisConfig.h.

249 {
251 for(unsigned int i=0; i<m_chainNames[2].size(); i++)
252 name += (m_chainNames[2][i]+"::"+m_types[2][i]+"::"+m_keys[2][i]+" ");
253 return name;
254 }

◆ 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 439 of file T_AnalysisConfig.h.

442 {
443
444
447 // std::cout << "try " << key << "\t" << m_provider->evtStore()->template transientContains<Collection>(key) << std::endl;
448
453 size_t pos = key_collection.find("/");
454 if ( pos!=std::string::npos ) {
455 key_collection = key.substr( pos+1, key.size()-pos );
456 key_tename = key.substr( 0, pos );
457 }
458
461
463
465 const std::string* keyStr = m_provider->evtStore()->keyToString(roi_link.key(), checkCLID);
466 m_provider->msg(MSG::DEBUG) << "Requesting range over (" << key << ") associated to ROI from " << (keyStr == nullptr ? "UNKNOWN" : *keyStr) << endmsg;
467
468 itrpair = (*m_tdt)->associateToEventView( handle, roi_link );
469
470 if ( itrpair.first != itrpair.second ) {
471 selector->selectTracks( itrpair.first, itrpair.second );
472 return true;
473 }
474 else {
475 m_provider->msg(MSG::DEBUG) << "TDT TrackFeature collection (" << key << ") is empty " << endmsg;
476 return false;
477 }
478 }

◆ selectTracksNotEmpty()

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

Definition at line 603 of file T_AnalysisConfig.h.

603 {
604 const Collection* collection = nullptr;
605 if ( key.empty() ) return false;
606 if ( !m_provider->evtStore()->template contains<Collection>( key ) ) return false;
607
609
610 if ( !( sc.isSuccess() && collection ) ) return false;
611
612 m_provider->msg(MSG::DEBUG) << "SG Collection->size() " << collection->size() << " (" << key << ")" << endmsg;
613
614 // added to fix muon samples bug
615 if ( collection->size() == 0 ) {
616 m_provider->msg(MSG::WARNING) << "no particles in collection" << endmsg;
617 return false;
618 }
619
621 return true;
622 }

◆ set_monTool()

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

Definition at line 1099 of file T_AnalysisConfigMT_Tier0.h.

1099{ m_monTool=m; }

◆ setBeamX()

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

Definition at line 261 of file T_AnalysisConfig.h.

261{ m_beamX=d; }

◆ setBeamY()

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

Definition at line 262 of file T_AnalysisConfig.h.

262{ m_beamY=d; }

◆ setBeamZ()

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

Definition at line 263 of file T_AnalysisConfig.h.

263{ m_beamZ=d; }

◆ setFilterOnRoi()

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

Definition at line 283 of file T_AnalysisConfig.h.

283{ return m_filterOnRoi=b; }

◆ setGenericFlag()

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

Definition at line 269 of file T_AnalysisConfig.h.

269{ m_genericFlag=b; }

◆ setMCTruth()

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

Definition at line 258 of file T_AnalysisConfig.h.

258{ m_mcTruth=b; }

◆ setRequireDecision()

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

Definition at line 285 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 165 of file T_AnalysisConfigMT_Tier0.h.

165{ m_runPurity=b; }

◆ setShifter()

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

Definition at line 167 of file T_AnalysisConfigMT_Tier0.h.

167{ m_shifter=b; }

◆ setUseHighestPT()

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

Definition at line 276 of file T_AnalysisConfig.h.

276{ m_useHighestPT=b; }

◆ setVtxIndex()

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

Definition at line 279 of file T_AnalysisConfig.h.

279{ m_vtxIndex=i; }

◆ testChains()

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

Definition at line 235 of file T_AnalysisConfig.h.

235 {
237 for(unsigned int i=0; i<m_chainNames[0].size(); i++)
238 name += (m_chainNames[0][i]+"::"+m_types[0][i]+"::"+m_keys[0][i]+" ");
239 return name;
240 }

◆ useBeamCondSvc()

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

Definition at line 169 of file T_AnalysisConfigMT_Tier0.h.

169{ m_useBeamCondSvc = b; }

Member Data Documentation

◆ _analysis

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

Definition at line 175 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 1110 of file T_AnalysisConfigMT_Tier0.h.

◆ m_analysis

TrackAnalysis* T_AnalysisConfig< T >::m_analysis
protectedinherited

Definition at line 961 of file T_AnalysisConfig.h.

◆ m_analysisInstanceName

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

Definition at line 940 of file T_AnalysisConfig.h.

◆ m_associator

TrackAssociator* T_AnalysisConfig< T >::m_associator
protectedinherited

Definition at line 960 of file T_AnalysisConfig.h.

◆ m_beamX

double T_AnalysisConfig< T >::m_beamX
protectedinherited

Definition at line 965 of file T_AnalysisConfig.h.

◆ m_beamY

double T_AnalysisConfig< T >::m_beamY
protectedinherited

Definition at line 965 of file T_AnalysisConfig.h.

◆ m_beamZ

double T_AnalysisConfig< T >::m_beamZ
protectedinherited

Definition at line 965 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 1109 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 1137 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 1117 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 1115 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 1114 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 1113 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 1116 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 1119 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 1107 of file T_AnalysisConfigMT_Tier0.h.

◆ m_filterOnRoi

bool T_AnalysisConfig< T >::m_filterOnRoi
protectedinherited

Definition at line 976 of file T_AnalysisConfig.h.

◆ m_filters

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

Definition at line 954 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 1135 of file T_AnalysisConfigMT_Tier0.h.

◆ m_genericFlag

int T_AnalysisConfig< T >::m_genericFlag
protectedinherited

Definition at line 967 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 1118 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 1141 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 1142 of file T_AnalysisConfigMT_Tier0.h.

◆ m_keepAllEvents

bool T_AnalysisConfig< T >::m_keepAllEvents
protectedinherited

Definition at line 970 of file T_AnalysisConfig.h.

◆ m_keys

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

Definition at line 945 of file T_AnalysisConfig.h.

◆ m_mcTruth

bool T_AnalysisConfig< T >::m_mcTruth
protectedinherited

Definition at line 963 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 1144 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 1126 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 1125 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 1127 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 1122 of file T_AnalysisConfigMT_Tier0.h.

◆ m_provider

T* T_AnalysisConfig< T >::m_provider
protectedinherited

Definition at line 932 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 1133 of file T_AnalysisConfigMT_Tier0.h.

◆ m_refChainKey

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

Definition at line 948 of file T_AnalysisConfig.h.

◆ m_refChainName

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

Definition at line 947 of file T_AnalysisConfig.h.

◆ m_releaseData

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

Definition at line 968 of file T_AnalysisConfig.h.

◆ m_requireDecision

bool T_AnalysisConfig< T >::m_requireDecision
protectedinherited

Definition at line 978 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 1129 of file T_AnalysisConfigMT_Tier0.h.

◆ m_selectorRef

TrigTrackSelector* T_AnalysisConfig< T >::m_selectorRef
protectedinherited

Definition at line 956 of file T_AnalysisConfig.h.

◆ m_selectorSel

TrigTrackSelector* T_AnalysisConfig< T >::m_selectorSel
protectedinherited

Definition at line 958 of file T_AnalysisConfig.h.

◆ m_selectorTest

TrigTrackSelector* T_AnalysisConfig< T >::m_selectorTest
protectedinherited

Definition at line 957 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 1131 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 1120 of file T_AnalysisConfigMT_Tier0.h.

◆ m_tdt

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

Definition at line 934 of file T_AnalysisConfig.h.

◆ m_testChainKey

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

Definition at line 951 of file T_AnalysisConfig.h.

◆ m_testChainName

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

Definition at line 950 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 1111 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 1139 of file T_AnalysisConfigMT_Tier0.h.

◆ m_types

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

Definition at line 944 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 1105 of file T_AnalysisConfigMT_Tier0.h.

◆ m_useHighestPT

bool T_AnalysisConfig< T >::m_useHighestPT
protectedinherited

Definition at line 972 of file T_AnalysisConfig.h.

◆ m_vtxIndex

int T_AnalysisConfig< T >::m_vtxIndex
protectedinherited

Definition at line 974 of file T_AnalysisConfig.h.


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