ATLAS Offline Software
Loading...
Searching...
No Matches
T_AnalysisConfig_Tier0< T > Class Template Reference

#include <T_AnalysisConfig_Tier0.h>

Inheritance diagram for T_AnalysisConfig_Tier0< T >:
Collaboration diagram for T_AnalysisConfig_Tier0< T >:

Public Member Functions

 T_AnalysisConfig_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)
virtual ~T_AnalysisConfig_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

Analysis_Tier0_analysis

Protected Member Functions

virtual void loop ()
virtual void book ()
virtual void finalize ()
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< Analysis_Tier0 * > 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
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>
class T_AnalysisConfig_Tier0< T >

Definition at line 80 of file T_AnalysisConfig_Tier0.h.

Constructor & Destructor Documentation

◆ T_AnalysisConfig_Tier0()

template<typename T>
T_AnalysisConfig_Tier0< T >::T_AnalysisConfig_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 )
inline

Definition at line 90 of file T_AnalysisConfig_Tier0.h.

95 :
101 analysis ),
102 _analysis(0),
103 m_useBeamCondSvc(false),
104 m_doOffline(true),
105 m_doMuons(false),
106 m_doElectrons(false),
107 m_doTaus(false),
108 m_doBjets(false),
109 m_hasTruthMap(false),
110 m_doTauThreeProng(false),
111 m_tauEtCutOffline(false),
112 m_NRois(0),
113 m_NRefTracks(0),
114 m_NTestTracks(0),
115 m_runPurity(false),
116 m_shifter(false),
117 m_pTthreshold(0),
118 m_first(true),
119 m_containTracks(false)
120 {
121 m_event = new TIDA::Event();
122 m_chainNames.push_back(testChainName);
123
124#if 0
125 ChainString& chain = m_chainNames.back();
126
127 std::cout << "\nT_AnalysisConfig_Tier0::name: " << name() << "\t" << this << std::endl;
128 std::cout << "T_AnalysisConfig_Tier0::chain specification: " << testChainName << " -> " << chain << "\t" << chain.raw() << std::endl;
129 std::cout << "\tchain: " << chain.head() << std::endl;
130 std::cout << "\tkey: " << chain.tail() << std::endl;
131 std::cout << "\troi: " << chain.roi() << std::endl;
132 std::cout << "\tvtx: " << chain.vtx() << std::endl;
133 std::cout << "\tte: " << chain.element() << std::endl;
134
135 std::cout << "\tpost: " << chain.post() << std::endl;
136 std::cout << "\tpt: " << chain.postvalue("pt") << std::endl;
137
138 std::cout << "\tcontainTracks: " << m_containTracks << std::endl;
139#endif
140
142 }
std::vector< ChainString > m_chainNames
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_AnalysisConfig_Tier0()

template<typename T>
virtual T_AnalysisConfig_Tier0< T >::~T_AnalysisConfig_Tier0 ( )
inlinevirtual

Definition at line 144 of file T_AnalysisConfig_Tier0.h.

144{ delete m_event; }

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>
virtual void T_AnalysisConfig_Tier0< T >::book ( )
inlineprotectedvirtual

Reimplemented from T_AnalysisConfig< T >.

Definition at line 1158 of file T_AnalysisConfig_Tier0.h.

1158 {
1159
1160 if(m_provider->msg().level() <= MSG::VERBOSE)
1161 m_provider->msg(MSG::VERBOSE) << "AnalysisConfig_Tier0::book() " << name() << endmsg;
1162
1163 m_provider->msg(MSG::ERROR) << "AnalysisConfig_Tier0::book() should no longer ever be called: " << name() << endmsg;
1164
1165 }

◆ containTracks()

template<typename T>
void T_AnalysisConfig_Tier0< T >::containTracks ( bool b)
inline

Definition at line 152 of file T_AnalysisConfig_Tier0.h.

152{ 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>
virtual void T_AnalysisConfig_Tier0< T >::finalize ( )
inlineprotectedvirtual

Reimplemented from T_AnalysisConfig< T >.

Definition at line 1169 of file T_AnalysisConfig_Tier0.h.

1169 {
1170
1171 if(m_provider->msg().level() <= MSG::VERBOSE)
1172 m_provider->msg(MSG::VERBOSE) << "AnalysisConfig_Tier0::finalise() " << m_provider->name() << endmsg;
1173
1174 m_analysis->finalise();
1175
1176 m_provider->msg(MSG::INFO) << m_provider->name() << " " << m_chainNames[0] << " \tNRois processed: " << m_NRois << "\tRef tracks: " << m_NRefTracks << "\tTestTracks: " << m_NTestTracks << endmsg;
1177
1178 if(m_provider->msg().level() <= MSG::VERBOSE)
1179 m_provider->msg(MSG::VERBOSE) << m_provider->name() << " finalised" << endmsg;
1180
1181 }

◆ 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>
virtual void T_AnalysisConfig_Tier0< T >::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

add the truth particles if needed

now add the vertices

now add the offline tracks and reco objects

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

create chains for ntpl

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

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

dummy full scan chain

HLT and EF-like EDM

L2 track EDM

get vertex information

now also add xAOD vertices

leave this code commented so that we have a record of the change - as soon as we can fix the missing track multiplicity from the vertex this will need to go back

variances

quality

retrieve online vertices

loop over combinations

"offline" type chains

now loop over the rois (again)

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

AOD

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

get offline tracks

what is this ???

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 179 of file T_AnalysisConfig_Tier0.h.

179 {
180
181 if( m_provider->msg().level() <= MSG::VERBOSE) {
182 m_provider->msg(MSG::VERBOSE) << "AnalysisConfig_Tier0::loop() for " << T_AnalysisConfig<T>::m_analysisInstanceName << endmsg;
183 }
184
185 // get (offline) beam position
186 double xbeam = 0;
187 double ybeam = 0;
188
189 if ( m_first ) {
190
191 m_first = false;
192
193 m_provider->msg(MSG::VERBOSE) << " using beam position\tx=" << xbeam << "\ty=" << ybeam << endmsg;
194
195 if (m_provider->msg().level() <= MSG::VERBOSE) {
196
198
199 for ( unsigned i=0 ; i<configuredChains.size() ; i++ ) {
200 m_provider->msg(MSG::VERBOSE) << "Chain " << configuredChains[i] << endmsg;
201 }
202
203 }
204
205
207
209
213 while ( chainitr!=m_chainNames.end() ) {
214
216 ChainString& chainName = (*chainitr);
217
218 m_provider->msg(MSG::INFO) << "process chain " << chainName << endmsg;
219
220 if ( chainName.head() == "" ) {
221
223
224 chains.push_back( ChainString(selectChain) );
225
226 if ( m_provider->msg().level() <= MSG::VERBOSE ) {
227 m_provider->msg(MSG::VERBOSE) << "Matching chain " << selectChain << " (" << chainName.head() << ")" << endmsg;
228 }
229
230 }
231 else {
232
235
236
237 for ( unsigned iselected=0 ; iselected<selectChains.size() ; iselected++ ) {
238
240
241#if 0
242 std::cout << "sorting:: chain specification: " << chainName << "\traw:" << chainName.raw() << std::endl;
243 std::cout << "\tchain: " << chainName.head() << std::endl;
244 std::cout << "\tkey: " << chainName.tail() << std::endl;
245 std::cout << "\troi: " << chainName.roi() << std::endl;
246 std::cout << "\tvtx: " << chainName.vtx() << std::endl;
247 std::cout << "\tte: " << chainName.element() << std::endl;
248 std::cout << "\tind: " << chainName.extra() << std::endl;
249#endif
250
253
254 if(m_provider->msg().level() <= MSG::VERBOSE) {
255 m_provider->msg(MSG::VERBOSE) << "Matching chain " << selectChains[iselected] << " (" << chainName.head() << ")" << endmsg;
256 }
257
258 }
259 }
260
261 ++chainitr;
262 }
263
264 // m_chainNames.insert( m_chainNames.end(), chains.begin(), chains.end() );
266
267 for ( unsigned ic=0 ; ic<m_chainNames.size() ; ic++ ) m_provider->msg(MSG::VERBOSE) << "Analyse chain " << m_chainNames[ic] << endmsg;
268
269 }
270
271
274
277
279 // Filter_Combined filterRef (&filter_offline, &filter_vertex);
280
281 int iRefFilter = 1;
282 int iTestFilter = 0;
283
284 if ( m_runPurity ) {
285 iRefFilter = 0;
286 iTestFilter = 1;
287 }
288
291
297
298 if ( xbeam!=0 || ybeam!=0 ) {
299 m_selectorRef->setBeamline( xbeam, ybeam );
300 }
301
303
304 // clear the ntuple TIDA::Event class
305 m_event->clear();
306
308#ifndef XAODTRACKING_TRACKPARTICLE_H
309 const EventInfo* pEventInfo;
310#else
312#endif
313 unsigned run_number = 0;
315 unsigned lumi_block = 0;
316 unsigned bunch_crossing_id = 0;
317 unsigned time_stamp = 0;
318 double mu_val = 0;
319
320 if ( this->template retrieve(pEventInfo, "EventInfo").isFailure() ) {
321 m_provider->msg(MSG::WARNING) << "Failed to get EventInfo " << endmsg;
322 } else {
323
324#ifndef XAODTRACKING_TRACKPARTICLE_H
325 run_number = pEventInfo->event_ID()->run_number();
326 event_number = pEventInfo->event_ID()->event_number();
327 lumi_block = pEventInfo->event_ID()->lumi_block();
328 time_stamp = pEventInfo->event_ID()->time_stamp();
329 bunch_crossing_id = pEventInfo->event_ID()->bunch_crossing_id();
330 mu_val = pEventInfo->averageInteractionsPerCrossing();
331#else
332 run_number = pEventInfo->runNumber();
333 event_number = pEventInfo->eventNumber();
334 lumi_block = pEventInfo->lumiBlock();
335 time_stamp = pEventInfo->timeStamp();
337 mu_val = pEventInfo->averageInteractionsPerCrossing();
338#endif
339 }
340
341 if(m_provider->msg().level() <= MSG::VERBOSE){
342 m_provider->msg(MSG::VERBOSE) << "run " << run_number
343 << "\tevent " << event_number
344 << "\tlb " << lumi_block << endmsg;
345 }
346
347 // m_provider->msg(MSG::INFO) << "run " << run_number
348 // << "\tevent " << event_number
349 // << "\tlb " << lumi_block << endmsg;
350
351 // std::cout << "run " << run_number << "\tevent " << event_number << "\tlb " << lumi_block << std::endl;
352
353
354 // clear the ntuple TIDA::Event class
355 m_event->clear();
356
357 m_event->run_number(run_number);
358 m_event->event_number(event_number);
359 m_event->lumi_block(lumi_block);
360 m_event->time_stamp(time_stamp);
361 m_event->bunch_crossing_id(bunch_crossing_id);
362 m_event->mu(mu_val);
363
366
367 bool analyse = false;
368
369 // Check HLTResult
370
371 for ( unsigned ichain=0 ; ichain<m_chainNames.size() ; ichain++ ) {
372
373 const std::string& chainname = m_chainNames[ichain].head();
374
375 if ( chainname == "" ) analyse = true;
376 else {
377
378 //Only for trigger chains
379 if ( chainname.find("L2") == std::string::npos &&
380 chainname.find("EF") == std::string::npos &&
381 chainname.find("HLT") == std::string::npos ) continue;
382
383 if ( m_provider->msg().level() <= MSG::DEBUG ) {
384 m_provider->msg(MSG::DEBUG) << "Chain " << chainname
385 << "\tpass " << (*m_tdt)->isPassed(chainname)
386 << "\tpres " << (*m_tdt)->getPrescale(chainname) << endmsg;
387 }
388
389 // std::cout << "Chain " << chainname << "\tpass " << (*m_tdt)->isPassed(chainname)
390 // << "\tpres " << (*m_tdt)->getPrescale(chainname) << std::endl;
391
392 if ( (*(m_tdt))->isPassed(chainname) || (*(m_tdt))->getPrescale(chainname) ) analyse = true;
393
394 }
395 }
396
397 // Remove this code to skip on truncated HLT results
398 // Need to leave the code here for the time being however, since we will
399 // still need in the future a more robust test to achieve this same
400 // functionality
401 //
402 // if ( (*m_tdt)->ExperimentalAndExpertMethods().isHLTTruncated() ) {
403 // m_provider->msg(MSG::WARNING) << "HLTResult truncated, skipping event" << endmsg;
404 // return;
405 // }
406
407 if ( !this->m_keepAllEvents && !analyse ) {
408 // m_provider->msg(MSG::VERBOSE) << "No chains passed unprescaled - not processing this event" << endmsg;
409 if(m_provider->msg().level() <= MSG::VERBOSE)
410 m_provider->msg(MSG::VERBOSE) << "No chains passed unprescaled - not processing this event" << endmsg;
411 return;
412 }
413
415
416 selectorTruth.clear();
417
418 if(m_provider->msg().level() <= MSG::VERBOSE)
419 m_provider->msg(MSG::VERBOSE) << "MC Truth flag " << m_mcTruth << endmsg;
420
421 if ( m_mcTruth && m_provider->msg().level() <= MSG::VERBOSE ) m_provider->msg(MSG::VERBOSE) << "getting Truth" << endmsg;
422
423
425
428
431
432
433
434#ifndef XAODTRACKING_TRACKPARTICLE_H
435
437
438 if ( m_doOffline ) {
439 if ( m_provider->evtStore()->template contains<VxContainer>("VxPrimaryCandidate") ) {
440 if ( this->template retrieve(primaryVtxCollection, "VxPrimaryCandidate").isFailure()) {
441 if (m_provider->msg().level() <= MSG::WARNING) m_provider->msg(MSG::WARNING) << "Primary vertex container not found" << endmsg;
442 }
443 else {
445 for ( ; vtxitr != primaryVtxCollection->end(); ++vtxitr) {
446 if ( (*vtxitr)->vxTrackAtVertex()->size()>0 ) {
447 vertices.push_back( TIDA::Vertex( (*vtxitr)->recVertex().position().x(),
448 (*vtxitr)->recVertex().position().y(),
449 (*vtxitr)->recVertex().position().z(),
450 0,0,0,
451 (*vtxitr)->vxTrackAtVertex()->size() ) );
452 }
453 }
454 }
455
456 // filter_vertex.setVertex(vertices);
457 }
458 }
459
460#else
461
462 //std::vector<TIDA::Vertex> vertices;
463
464 m_provider->msg(MSG::VERBOSE) << "fetching AOD Primary vertex container" << endmsg;
465
467
468 if ( this->template retrieve( xaodVtxCollection, "PrimaryVertices" ).isFailure()) {
469 if (m_provider->msg().level() <= MSG::WARNING) m_provider->msg(MSG::WARNING) << "xAOD Primary vertex container not found with key " << "PrimaryVertices" << endmsg;
470 }
471
472 if ( xaodVtxCollection!=0 ) {
473
474 m_provider->msg(MSG::VERBOSE) << "xAOD Primary vertex container " << xaodVtxCollection->size() << " entries" << endmsg;
475
477 for ( ; vtxitr != xaodVtxCollection->end(); ++vtxitr ) {
478 if ( (*vtxitr)->nTrackParticles()>0 && (*vtxitr)->vertexType()!=0 ) {
479 vertices.push_back( TIDA::Vertex( (*vtxitr)->x(),
480 (*vtxitr)->y(),
481 (*vtxitr)->z(),
483 (*vtxitr)->covariancePosition()(Trk::x,Trk::x),
484 (*vtxitr)->covariancePosition()(Trk::y,Trk::y),
485 (*vtxitr)->covariancePosition()(Trk::z,Trk::z),
486 (*vtxitr)->nTrackParticles(),
488 (*vtxitr)->chiSquared(),
489 (*vtxitr)->numberDoF() ) );
490 }
491 }
492 }
493
494
495#endif
496
497
499
500 if ( m_mcTruth ) {
501 m_event->addChain( "Truth" );
502 m_event->back().addRoi(TIDARoiDescriptor());
503 m_event->back().back().addTracks(selectorTruth.tracks());
504 }
505
507
508 if ( m_doOffline ) {
509 for ( unsigned i=0 ; i<vertices.size() ; i++ ) {
510 if(m_provider->msg().level() <= MSG::VERBOSE)
511 m_provider->msg(MSG::VERBOSE) << "vertex " << i << " " << vertices[i] << endmsg;
512 m_event->addVertex(vertices[i]);
513 }
514 }
515
517
518 // int Noff = 0;
522
525
526 offline_tracks.clear();
527 electron_tracks.clear();
528 muon_tracks.clear();
529
530 ref_tracks.clear();
531 test_tracks.clear();
532
534 for ( unsigned ichain=0 ; ichain<m_chainNames.size() ; ichain++ ) {
535
536 test_tracks.clear();
537
539
540 // std::string& chainname = chains[ichain];
541 const std::string& chainname = m_chainNames[ichain].head();
542 const std::string& key = m_chainNames[ichain].tail();
543 const std::string& vtx_name = m_chainNames[ichain].vtx();
544 //no currently used but retained in case
545 //const std::string& roi_name = m_chainNames[ichain].roi();
546 //const std::string& te_name = m_chainNames[ichain].element();
547
548 m_pTthreshold = 0;
549
550 if ( m_chainNames[ichain].postcount() ) {
551 std::string ptvalue = m_chainNames[ichain].postvalue("pt");
553 }
554
555 // std::cout << "\tchain " << m_chainNames[ichain] << "\tchainname " << chainname << "\tvtx " << vtx_name << "\troi " << roi_name << std::endl;
556
558 unsigned decisiontype;
559
561
562
565
566 if ( chainname!="" && m_provider->msg().level() <= MSG::VERBOSE ) {
567
568 m_provider->msg(MSG::VERBOSE) << "status for chain " << chainname
569 << "\tpass " << (*m_tdt)->isPassed(chainname)
570 << "\tprescale " << (*m_tdt)->getPrescale(chainname) << endmsg;
571
572 m_provider->msg(MSG::VERBOSE) << "fetching features for chain " << chainname << endmsg;
573
574 m_provider->msg(MSG::VERBOSE) << chainname << "\tpassed: " << (*m_tdt)->isPassed( chainname ) << endmsg;
575 }
576
577 // std::cout << "\tstatus for chain " << chainname
578 // << "\tpass " << (*m_tdt)->isPassed( chainname )
579 // << "\tpassdt " << (*m_tdt)->isPassed( chainname, decisiontype )
580 // << "\tprescale " << (*m_tdt)->getPrescale( chainname ) << std::endl;
581
582
583 // m_provider->msg(MSG::INFO) << chainname << "\tpassed: " << (*m_tdt)->isPassed( chainname ) << "\t" << m_chainNames[ichain] << "\trun " << run_number << "\tevent " << event_number << endmsg;
584
585
586 if ( chainname!="" && !this->m_keepAllEvents && !(*m_tdt)->isPassed( chainname, decisiontype ) ) continue;
587
590 // Trig::FeatureContainer f = (*m_tdt)->features( chainname, TrigDefs::alsoDeactivateTEs);
591
594
596
598
599 m_event->addChain( chainConfig );
600
601 TIDA::Chain& chain = m_event->back();
602
603 if ( chainName == "" ) {
604
605 m_selectorTest->clear();
606
608
610
611 chain.addRoi( *roiInfo );
612
613
614# ifdef XAODTRACKING_TRACKPARTICLE_H
615 if ( m_provider->evtStore()->template contains<xAOD::TrackParticleContainer>(key) ) {
618 }
619# endif
620
622
623 chain.back().addTracks(testtracks);
624
625 delete roiInfo;
626
627 }
628 else {
629
630 Trig::FeatureContainer f = (*m_tdt)->features( chainname, decisiontype );
631 Trig::FeatureContainer::combination_const_iterator c(f.getCombinations().begin());
633
634
635 if ( c==cEnd ) {
636 if(m_provider->msg().level() <= MSG::VERBOSE){
637 m_provider->msg(MSG::VERBOSE) << "No combinations: skipping this chain " << chainname << endmsg;
638 }
639 continue;
640 }
641
642 if(m_provider->msg().level() <= MSG::VERBOSE) {
643 m_provider->msg(MSG::VERBOSE) << "combinations for chain " << chainname << " " << (cEnd-c) << endmsg;
644 }
645
646 unsigned icomb = 0;
647
648 for( ; c!=cEnd ; ++c ) {
649
650 icomb++;
651
652 // now add rois to this ntuple chain
653
654 // Get seeding RoI
655 // std::vector< Trig::Feature<TrigRoiDescriptor> > initRois = c->get<TrigRoiDescriptor>("initialRoI", TrigDefs::alsoDeactivateTEs);
656 // std::vector< Trig::Feature<TrigRoiDescriptor> > initRois = c->get<TrigRoiDescriptor>("forID", TrigDefs::alsoDeactivateTEs);
657
659
661
662 if ( roi_key=="SuperRoi" && icomb>1 ) continue;
663
664 if ( roi_key!="" ) {
666 }
667 else {
668 initRois = c->get<TrigRoiDescriptor>("forID", decisiontype );
669 if ( initRois.empty() ) initRois = c->get<TrigRoiDescriptor>("", decisiontype );
670 if ( initRois.empty() ) initRois = c->get<TrigRoiDescriptor>("initialRoI", decisiontype );
671 }
672
673 // std::cout << "initRois.size() " << initRois.size() << std::endl;
674
675 if ( initRois.empty() ) continue;
676
677
678 // for ( unsigned ir=0 ; ir<initRois.size() ; ir++ ) {
679 // std::cout << "\t" << ir << "\t" << *initRois[ir].cptr() << std::endl;
680 // }
681
682 // Skip chains seeded by multiple RoIs: not yet implemented
683 if(initRois.size()>1 && roi_key!="SuperRoi" ) {
684 if(m_provider->msg().level() <= MSG::VERBOSE)
685 m_provider->msg(MSG::VERBOSE) << " More than one initial RoI found for seeded chain " << chainname << ": not yet supported" << endmsg;
686 continue;
687 }
688
690
691 if( !initRois.empty() ) {
692 const TrigRoiDescriptor* roid = initRois[0].cptr();
693
694 if(m_provider->msg().level() <= MSG::VERBOSE)
695 m_provider->msg(MSG::VERBOSE) << " RoI descriptor for seeded chain " << chainname << " " << *roid << endmsg;
696
698 // roiInfo->etaHalfWidth(m_roiInfo->etaHalfWidth());
699 // roiInfo->phiHalfWidth(m_roiInfo->phiHalfWidth());
700 // roiInfo->etaHalfWidth(roid->etaHalfWidth());
701 // roiInfo->phiHalfWidth(roid->phiHalfWidth());
702 // roiInfo->zedHalfWidth(roid->zedHalfWidth());
703
704 if(m_provider->msg().level() <= MSG::VERBOSE)
705 m_provider->msg(MSG::VERBOSE) << "using chain roi " << *roid << endmsg;
706
707 }
708 else {
710 // roiInfo->etaHalfWidth(5);
711 // roiInfo->phiHalfWidth(M_PI);
712 // roiInfo->zedHalfWidth(m_roiInfo->zedHalfWidth());
713
714 if(m_provider->msg().level() <= MSG::WARNING)
715 m_provider->msg(MSG::WARNING) << "roi not found" << endmsg;
716
717 }
718
719 if(m_provider->msg().level() <= MSG::VERBOSE) m_provider->msg(MSG::VERBOSE) << *roiInfo << endmsg;
720
721 m_selectorTest->clear();
722
723 m_provider->msg(MSG::VERBOSE) << "Searching for collection " << key << endmsg;
724 // std::cout << "Searching for collection " << key << std::endl;
725
727 if ( key.find("InDetTrigParticleCreation")!=std::string::npos ||
728 key.find("_IDTrig")!=std::string::npos ||
729 key.find("_EFID")!=std::string::npos ||
730 chainName.find("EF_")!=std::string::npos ||
731 chainName.find("HLT_")!=std::string::npos ) {
732# ifdef XAODTRACKING_TRACKPARTICLE_H
734 else if ( this->template selectTracks<Rec::TrackParticleContainer>( m_selectorTest, c, key ) );
735# else
737# endif
738 else if ( this->template selectTracks<TrackCollection>( m_selectorTest, c, key ) );
739 else {
740 //m_provider->msg(MSG::WARNING) << "No track collection " << key << " found" << endmsg;
741 }
742 }
743 else {
745 if ( chainName.find("L2_")!=std::string::npos ) {
747 else if ( this->template selectTracks<TrackCollection>( m_selectorTest, c, key ) );
748# ifdef XAODTRACKING_TRACKPARTICLE_H
750# endif
751 else m_provider->msg(MSG::WARNING) << "No track collection " << key << " found" << endmsg;
752 }
753 }
754
755
757
758 m_provider->msg(MSG::VERBOSE) << "test tracks.size() " << testtracks.size() << endmsg;
759 // std::cout << "test tracks.size() " << testtracks.size() << std::endl;
760
761 // std::cout << "\ttest tracks.size() " << testtracks.size() << std::endl;
762
763 if ( m_provider->msg().level() <= MSG::VERBOSE ) {
764 m_provider->msg(MSG::VERBOSE) << "test tracks.size() " << testtracks.size() << endmsg;
765 for ( int ii=testtracks.size() ; ii-- ; ) {
766 m_provider->msg(MSG::VERBOSE) << " test track " << ii << " " << *testtracks[ii] << endmsg;
767 //test_tracks.push_back(testtracks.at(ii));
768 }
769 }
770
771 chain.addRoi( *roiInfo );
772
773 chain.back().addTracks(testtracks);
774
775 delete roiInfo;
776
778
780
781 // std::cout << "vertex " << vtx_name << "\tchain " << chainName << "\tconfig " << chainConfig << std::endl;
782
783 if ( vtx_name!="" ) {
784
785 m_provider->msg(MSG::VERBOSE) << "\tFetch xAOD::VertexContainer for chain " << chainConfig << " with key " << vtx_name << endmsg;
786
788
789 if ( xaodtrigvertices.empty() ) {
790 if ( m_provider->msg().level() <= MSG::DEBUG ) {
791 m_provider->msg(MSG::WARNING) << "\tNo xAOD::VertexContainer for chain " << chainConfig << " for key " << vtx_name << endmsg;
792 }
793 }
794 else {
795
796 m_provider->msg(MSG::VERBOSE) << "\txAOD::VertexContainer found with size " << xaodtrigvertices.size() << "\t" << vtx_name << endmsg;
797
798 for ( unsigned iv=0 ; iv<xaodtrigvertices.size() ; iv++ ) {
799
801
802 m_provider->msg(MSG::VERBOSE) << "\t" << iv << " xAOD VxContainer for " << chainConfig << " " << vert << " key " << vtx_name << endmsg;
803
805
806 for ( ; vtxitr != vert->end(); ++vtxitr) {
809 // if ( ( (*vtxitr)->nTrackParticles()>0 && (*vtxitr)->vertexType()!=0 ) || vtx_name=="EFHistoPrmVtx" ) {
810 if ( (*vtxitr)->vertexType()!=0 || vtx_name=="EFHistoPrmVtx" ) {
811 chain.back().addVertex( TIDA::Vertex( (*vtxitr)->x(),
812 (*vtxitr)->y(),
813 (*vtxitr)->z(),
815 (*vtxitr)->covariancePosition()(Trk::x,Trk::x),
816 (*vtxitr)->covariancePosition()(Trk::y,Trk::y),
817 (*vtxitr)->covariancePosition()(Trk::z,Trk::z),
818 (*vtxitr)->nTrackParticles(),
820 (*vtxitr)->chiSquared(),
821 (*vtxitr)->numberDoF() ) );
822
823 }
824 }
825 }
826
827 }
828
829 }
830
831 }
832
833 }
834
835
836 if ( m_provider->msg().level() <= MSG::VERBOSE ) {
837 m_provider->msg(MSG::VERBOSE) << "event: " << *m_event << endmsg;
838 }
839
841
842 for ( unsigned iroi=0 ; iroi<chain.size() ; iroi++ ) {
843
844 m_selectorRef->clear();
845
846 if ( this->filterOnRoi() ) {
847 filterRef.setRoi( &chain.rois().at(iroi).roi() );
848 filterRef.containtracks( m_containTracks );
849 }
850 else filterRef.setRoi( 0 );
851
852 test_tracks.clear();
853
854
868
869 if ( m_provider->msg().level() <= MSG::VERBOSE )
870 m_provider->msg(MSG::VERBOSE) << "MC Truth flag " << m_mcTruth << endmsg;
871
872 bool foundTruth = false;
873
874 if ( !m_doOffline && m_mcTruth ) {
875
876 if ( this->filterOnRoi() ) filter_truth.setRoi( &chain.rois().at(iroi).roi() );
877 else filter_truth.setRoi( 0 ); // don't filter on RoI unless needed
878
879 selectorTruth.clear();
880
881 if ( m_provider->msg().level() <= MSG::VERBOSE )
882 m_provider->msg(MSG::VERBOSE) << "getting Truth" << endmsg;
883
884 if ( m_provider->evtStore()->template contains<TruthParticleContainer>("INav4MomTruthEvent") ) {
885 //ESD
886 this->template selectTracks<TruthParticleContainer>( &selectorTruth, "INav4MomTruthEvent" );
887 foundTruth = true;
888 }
889 else if ( m_provider->evtStore()->template contains<TruthParticleContainer>("SpclMC") ) {
891 this->template selectTracks<TruthParticleContainer>( &selectorTruth, "SpclMC");
892 foundTruth = true;
893 }
894 else if ( m_provider->evtStore()->template contains<TruthParticleContainer>("") ) {
897 foundTruth = true;
898 }
899 else
900 if ( m_provider->msg().level() <= MSG::VERBOSE ) {
901 m_provider->msg(MSG::VERBOSE) << "Truth not found - none whatsoever!" << endmsg;
902 }
903 }
904
905
906 if ( !m_doOffline && m_mcTruth && !foundTruth ) {
907
908 if ( m_provider->msg().level() <= MSG::VERBOSE ) {
909 m_provider->msg(MSG::VERBOSE) << "getting Truth" << endmsg;
910 }
911
913
915 const McEventCollection* mcevent = 0;
916
918
919 std::string keys[4] = { "GEN_AOD", "TruthEvent", "", "G4Truth" };
920
921 std::string key = "";
922
923 bool foundcollection = false;
924
925 for ( int ik=0 ; ik<4 ; ik++ ) {
926
927 if ( m_provider->msg().level() <= MSG::VERBOSE ) {
928 m_provider->msg(MSG::VERBOSE) << "Try McEventCollection: " << keys[ik] << endmsg;
929 }
930
931 if ( !m_provider->evtStore()->template contains<McEventCollection>(keys[ik]) ) {
932 if( m_provider->msg().level() <= MSG::VERBOSE )
933 m_provider->msg(MSG::VERBOSE) << "No McEventCollection: " << keys[ik] << endmsg;
934 continue;
935 }
936
937 if ( m_provider->msg().level() <= MSG::VERBOSE )
938 m_provider->msg(MSG::VERBOSE) << "evtStore()->retrieve( mcevent, " << keys[ik] << " )" << endmsg;
939
940 if ( this->template retrieve( mcevent, keys[ik] ).isFailure() ) {
941 if ( m_provider->msg().level() <= MSG::VERBOSE )
942 m_provider->msg(MSG::VERBOSE) << "Failed to get McEventCollection: " << keys[ik] << endmsg;
943 }
944 else {
946 key = keys[ik];
947 if(m_provider->msg().level() <= MSG::VERBOSE)
948 m_provider->msg(MSG::VERBOSE) << "Found McEventCollection: " << key << endmsg;
949 foundcollection = true;
950 break;
951 }
952 }
953
955 if ( !foundcollection ) {
956 if(m_provider->msg().level() <= MSG::VERBOSE)
957 m_provider->msg(MSG::WARNING) << "No MC Truth Collections of any sort, whatsoever!!!" << endmsg;
958
959 // m_tree->Fill();
960 // return StatusCode::FAILURE;
961
962 return;
963 }
964
965 if ( m_provider->msg().level() <= MSG::VERBOSE ) {
966 m_provider->msg(MSG::VERBOSE) << "Found McEventCollection: " << key << "\tNevents " << mcevent->size() << endmsg;
967 }
968
971
972 unsigned ie = 0;
973 unsigned ip = 0;
974
975 unsigned ie_ip = 0;
976
977 while ( evitr!=evend ) {
978
979 int _ip = 0;
980
982
983 //The logic should be clarified here
984 if ( pid!=0 ) {
985
986 for (auto pitr: *(*evitr)) {
987
988 selectorTruth.selectTrack( pitr );
989
990 ++_ip;
991
992 }
993
994 }
995 ++ie;
996 ++evitr;
997
998 if ( _ip>0 ) {
1000 // m_provider->msg(MSG::VERBOSE) << "Found " << ie << "\tpid " << pid << "\t with " << ip << " TruthParticles (GenParticles)" << endmsg;
1001 ++ie_ip;
1002 ip += _ip;
1003 }
1004 }
1005
1006 if(m_provider->msg().level() <= MSG::VERBOSE){
1007 m_provider->msg(MSG::VERBOSE) << "Found " << ip << " TruthParticles (GenParticles) in " << ie_ip << " GenEvents out of " << ie << endmsg;
1008 m_provider->msg(MSG::VERBOSE) << "selected " << selectorTruth.size() << " TruthParticles (GenParticles)" << endmsg;
1009 }
1010
1011 if(selectorTruth.size() > 0) foundTruth = true;
1012
1013 if ( !(ip>0) ) {
1014 if (m_provider->msg().level() <= MSG::VERBOSE) m_provider->msg(MSG::WARNING) << "NO TRUTH PARTICLES - returning" << endmsg;
1015 return;
1016 }
1017
1018 }
1019
1021
1022 // m_provider->msg(MSG::VERBOSE) << " Offline tracks " << endmsg;
1023
1024 if ( m_doOffline ) {
1025
1026# ifdef XAODTRACKING_TRACKPARTICLE_H
1027 if ( m_provider->evtStore()->template contains<xAOD::TrackParticleContainer>("InDetTrackParticles") ) {
1028 this->template selectTracks<xAOD::TrackParticleContainer>( m_selectorRef, "InDetTrackParticles" );
1029 refbeamspot = this->template getBeamspot<xAOD::TrackParticleContainer>( "InDetTrackParticles" );
1030 }
1031 else if (m_provider->evtStore()->template contains<Rec::TrackParticleContainer>("TrackParticleCandidate") ) {
1032 this->template selectTracks<Rec::TrackParticleContainer>( m_selectorRef, "TrackParticleCandidate" );
1033 }
1034# else
1035 if (m_provider->evtStore()->template contains<Rec::TrackParticleContainer>("TrackParticleCandidate") ) {
1036 this->template selectTracks<Rec::TrackParticleContainer>( m_selectorRef, "TrackParticleCandidate" );
1037 }
1038# endif
1039 else if ( m_provider->msg().level() <= MSG::WARNING ) {
1040 m_provider->msg(MSG::WARNING) << " Offline tracks not found " << endmsg;
1041 }
1042
1043 ref_tracks = m_selectorRef->tracks();
1044
1045 if ( m_provider->msg().level() <= MSG::VERBOSE ) {
1046 m_provider->msg(MSG::VERBOSE) << "ref tracks.size() " << m_selectorRef->tracks().size() << endmsg;
1047 for ( int ii=m_selectorRef->tracks().size() ; ii-- ; ) {
1048 m_provider->msg(MSG::VERBOSE) << " ref track " << ii << " " << *m_selectorRef->tracks()[ii] << endmsg;
1049 }
1050 }
1051
1052 }
1053 else {
1055 if ( m_mcTruth && foundTruth ){
1056 ref_tracks=selectorTruth.tracks();
1057 }
1058 }
1059
1060
1061
1062 test_tracks.clear();
1063
1064 for ( unsigned itrk=0 ; itrk<chain.rois().at(iroi).tracks().size() ; itrk++ ) {
1065 test_tracks.push_back(&(chain.rois().at(iroi).tracks().at(itrk)));
1066 }
1067
1068
1069 // std::cout << "sutt track multiplicities: offline " << offline_tracks.size() << "\ttest " << test_tracks.size() << std::endl;
1070
1071 _analysis->setvertices( vertices.size() );
1072
1073 if ( refbeamspot.size()>0 ) _analysis->setBeamRef( refbeamspot );
1074 if ( testbeamspot.size()>0 ) _analysis->setBeamTest( testbeamspot );
1075
1078
1079 if ( m_runPurity ) {
1080
1081 if ( this->getUseHighestPT() ) HighestPTOnly( test_tracks );
1082
1084
1086 m_NRois++;
1087 m_NRefTracks += test_tracks.size();
1088 m_NTestTracks += ref_tracks.size();
1089
1092
1094
1095 }
1096 else {
1097
1099
1100 if ( this->getUseHighestPT() ) HighestPTOnly( ref_tracks );
1101
1103
1105
1107 m_NRois++;
1108 m_NRefTracks += ref_tracks.size();
1109 m_NTestTracks += test_tracks.size();
1110
1113
1114 // std::cout << "SUTT: execute : N tracks " << ref_tracks.size() << " " << test_tracks.size() << std::endl;
1115
1116 _analysis->setroi( &chain.rois().at(iroi).roi() );
1118
1119 // std::cout << "chain " << m_chainNames[ichain] << " " << "\tvtx name " << vtx_name << std::endl;
1120
1121 if ( vtx_name!="" ) {
1123 std::vector<TIDA::Vertex> vr = chain.rois().at(iroi).vertices();
1125 for ( unsigned iv=0 ; iv<vr.size() ; iv++ ) vtx_rec.push_back( &vr[iv] );
1126
1128 if ( this->getVtxIndex()<0 ) {
1129 for ( unsigned iv=0 ; iv<vertices.size() ; iv++ ) vtx.push_back( &vertices[iv] );
1130 }
1131 else {
1132 if ( vertices.size()>unsigned(this->getVtxIndex()) ) vtx.push_back( &vertices[this->getVtxIndex()] );
1133 }
1134
1135 _analysis->execute_vtx( vtx, vtx_rec, m_event );
1136 }
1137
1138 }
1139
1140 if ( _analysis->debug() ) {
1141 m_provider->msg(MSG::INFO) << "Missing track for " << m_chainNames[ichain]
1142 << "\trun " << run_number
1143 << "\tevent " << event_number
1144 << "\tlb " << lumi_block << endmsg;
1145 }
1146
1147 }
1148
1149 }
1150
1151 if ( m_provider->msg().level() <= MSG::VERBOSE ) {
1152 m_provider->msg(MSG::VERBOSE) << "\n\nEvent " << *m_event << endmsg;
1153 }
1154 }
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
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; }

◆ 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 }

◆ 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>
void T_AnalysisConfig_Tier0< T >::setRunPurity ( bool b)
inline

Definition at line 146 of file T_AnalysisConfig_Tier0.h.

146{ m_runPurity=b; }

◆ setShifter()

template<typename T>
void T_AnalysisConfig_Tier0< T >::setShifter ( bool b)
inline

Definition at line 148 of file T_AnalysisConfig_Tier0.h.

148{ 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>
void T_AnalysisConfig_Tier0< T >::useBeamCondSvc ( bool b)
inline

Definition at line 150 of file T_AnalysisConfig_Tier0.h.

150{ m_useBeamCondSvc = b; }

Member Data Documentation

◆ _analysis

template<typename T>
Analysis_Tier0* T_AnalysisConfig_Tier0< T >::_analysis

Definition at line 156 of file T_AnalysisConfig_Tier0.h.

◆ m_analyses

template<typename T>
std::vector<Analysis_Tier0*> T_AnalysisConfig_Tier0< T >::m_analyses
protected

Definition at line 1191 of file T_AnalysisConfig_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>
std::vector<ChainString> T_AnalysisConfig_Tier0< T >::m_chainNames
protected

Definition at line 1190 of file T_AnalysisConfig_Tier0.h.

◆ m_containTracks

template<typename T>
bool T_AnalysisConfig_Tier0< T >::m_containTracks
protected

Definition at line 1218 of file T_AnalysisConfig_Tier0.h.

◆ m_doBjets

template<typename T>
bool T_AnalysisConfig_Tier0< T >::m_doBjets
protected

Definition at line 1198 of file T_AnalysisConfig_Tier0.h.

◆ m_doElectrons

template<typename T>
bool T_AnalysisConfig_Tier0< T >::m_doElectrons
protected

Definition at line 1196 of file T_AnalysisConfig_Tier0.h.

◆ m_doMuons

template<typename T>
bool T_AnalysisConfig_Tier0< T >::m_doMuons
protected

Definition at line 1195 of file T_AnalysisConfig_Tier0.h.

◆ m_doOffline

template<typename T>
bool T_AnalysisConfig_Tier0< T >::m_doOffline
protected

Definition at line 1194 of file T_AnalysisConfig_Tier0.h.

◆ m_doTaus

template<typename T>
bool T_AnalysisConfig_Tier0< T >::m_doTaus
protected

Definition at line 1197 of file T_AnalysisConfig_Tier0.h.

◆ m_doTauThreeProng

template<typename T>
bool T_AnalysisConfig_Tier0< T >::m_doTauThreeProng
protected

Definition at line 1200 of file T_AnalysisConfig_Tier0.h.

◆ m_event

template<typename T>
TIDA::Event* T_AnalysisConfig_Tier0< T >::m_event
protected

Definition at line 1188 of file T_AnalysisConfig_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>
bool T_AnalysisConfig_Tier0< T >::m_first
protected

Definition at line 1216 of file T_AnalysisConfig_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>
bool T_AnalysisConfig_Tier0< T >::m_hasTruthMap
protected

Definition at line 1199 of file T_AnalysisConfig_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_NRefTracks

template<typename T>
int T_AnalysisConfig_Tier0< T >::m_NRefTracks
protected

Definition at line 1207 of file T_AnalysisConfig_Tier0.h.

◆ m_NRois

template<typename T>
int T_AnalysisConfig_Tier0< T >::m_NRois
protected

output stats

Definition at line 1206 of file T_AnalysisConfig_Tier0.h.

◆ m_NTestTracks

template<typename T>
int T_AnalysisConfig_Tier0< T >::m_NTestTracks
protected

Definition at line 1208 of file T_AnalysisConfig_Tier0.h.

◆ m_outputFileName

template<typename T>
std::string T_AnalysisConfig_Tier0< T >::m_outputFileName
protected

Definition at line 1203 of file T_AnalysisConfig_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>
double T_AnalysisConfig_Tier0< T >::m_pTthreshold
protected

Definition at line 1214 of file T_AnalysisConfig_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>
bool T_AnalysisConfig_Tier0< T >::m_runPurity
protected

Definition at line 1210 of file T_AnalysisConfig_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>
bool T_AnalysisConfig_Tier0< T >::m_shifter
protected

Definition at line 1212 of file T_AnalysisConfig_Tier0.h.

◆ m_tauEtCutOffline

template<typename T>
bool T_AnalysisConfig_Tier0< T >::m_tauEtCutOffline
protected

Definition at line 1201 of file T_AnalysisConfig_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>
std::string T_AnalysisConfig_Tier0< T >::m_testType
protected

Definition at line 1192 of file T_AnalysisConfig_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>
bool T_AnalysisConfig_Tier0< T >::m_useBeamCondSvc
protected

Definition at line 1186 of file T_AnalysisConfig_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: