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

#include <T_AnalysisConfigR3_Tier0.h>

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

Public Member Functions

 T_AnalysisConfigR3_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_AnalysisConfigR3_Tier0 ()
void initialise ()
void setRunPurity (bool b)
void setShifter (bool b)
void useBeamCondSvc (bool b)
void containTracks (bool b)
void setPdgID (int i=0)
void setParentPdgID (int i=0)
void setMCTruthRef (bool b)
void setOfflineRef (bool b)
void setTypes (const std::vector< std::string > &t)
void set_monTool (ToolHandle< GenericMonitoringTool > *m)
ToolHandle< GenericMonitoringTool > * monTool ()
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

Am_manalysis

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
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_doTauThreeProng
bool m_tauEtCutOffline
std::vector< std::string > m_offline_types
std::vector< std::string > m_types
std::string m_outputFileName
int m_pdgID
int m_parent_pdgID
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
bool m_tnp_flag
ToolHandle< GenericMonitoringTool > * m_monTool
TIDA::Histogram< float > * m_invmass
TIDA::Histogram< float > * m_invmass_obj
T * m_provider
ToolHandle< Trig::TrigDecisionTool > * m_tdt
std::string m_analysisInstanceName
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 = AnalysisR3_Tier0>
class T_AnalysisConfigR3_Tier0< T, A >

Definition at line 93 of file T_AnalysisConfigR3_Tier0.h.

Constructor & Destructor Documentation

◆ T_AnalysisConfigR3_Tier0()

template<typename T, typename A = AnalysisR3_Tier0>
T_AnalysisConfigR3_Tier0< T, A >::T_AnalysisConfigR3_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

leave in for development std::cout << "chain size: " << m_chainNames.size() << "(" << this << ")" << std::endl;

std::cout << "chain size: " << m_chainNames.size() << "(" << this << ")" << std::endl;

Definition at line 104 of file T_AnalysisConfigR3_Tier0.h.

110 :
116 analysis),
117 m_manalysis(0),
118 m_useBeamCondSvc(false),
119 m_doOffline(true),
120 m_doMuons(false),
121 m_doElectrons(false),
122 m_doTaus(false),
123 m_doBjets(false),
124 m_doTauThreeProng(false),
125 m_tauEtCutOffline(false),
126 m_pdgID(0),
128 m_NRois(0),
129 m_NRefTracks(0),
130 m_NTestTracks(0),
131 m_runPurity(false),
132 m_shifter(false),
133 m_pTthreshold(0),
134 m_first(true),
135 m_containTracks(false),
136 m_tnp_flag(false),
137 m_monTool(0),
138 m_invmass(0),
140 {
141
144
145 m_chainNames.push_back(testChainName);
146
148
150
151#if 0
153 ChainString& chain = m_chainNames.back();
154
155 std::cout << "\nT_AnalysisConfigR3_Tier0::name: " << name() << "\t" << this << std::endl;
156 std::cout << "T_AnalysisConfigR3_Tier0::chain specification: " << testChainName << " -> " << chain << "\t" << chain.raw() << std::endl;
157 std::cout << "\tchain: " << chain.head() << std::endl;
158 std::cout << "\tkey: " << chain.tail() << std::endl;
159 std::cout << "\troi: " << chain.roi() << std::endl;
160 std::cout << "\tvtx: " << chain.vtx() << std::endl;
161 std::cout << "\tte: " << chain.element() << std::endl;
162 std::cout << "\textra: " << chain.extra() << std::endl;
163
164 std::cout << "\tpost: " << chain.post() << std::endl;
165 std::cout << "\tpt: " << chain.postvalue("pt") << std::endl;
166
167 std::cout << "\tcontainTracks: " << m_containTracks << std::endl;
168
169#endif
170
172
173 if ( m_TnP_tool ) m_tnp_flag = true;
174
175 }
TIDA::Histogram< float > * m_invmass
std::vector< ChainString > m_chainNames
TIDA::Histogram< float > * m_invmass_obj
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_AnalysisConfigR3_Tier0()

template<typename T, typename A = AnalysisR3_Tier0>
virtual T_AnalysisConfigR3_Tier0< T, A >::~T_AnalysisConfigR3_Tier0 ( )
inlinevirtual

Definition at line 178 of file T_AnalysisConfigR3_Tier0.h.

178 {
179 if ( m_TnP_tool ) delete m_TnP_tool;
180 if ( m_invmass ) delete m_invmass;
181 if ( m_invmass_obj ) delete m_invmass_obj;
182 }

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 = AnalysisR3_Tier0>
virtual void T_AnalysisConfigR3_Tier0< T, A >::book ( )
inlineprotectedvirtual

get list of configured triggers

don't use test_type now ?

these are the Expert / non-Shifter histograms - encode the full chain names

add trigger element and roi descriptor names

Reimplemented from T_AnalysisConfig< T >.

Definition at line 1113 of file T_AnalysisConfigR3_Tier0.h.

1113 {
1114
1115 if(m_provider->msg().level() <= MSG::VERBOSE)
1116 m_provider->msg(MSG::VERBOSE) << "AnalysisConfigR3_Tier0::book() " << name() << endmsg;
1117
1118 // get the TriggerDecisionTool
1119
1120 if( m_tdt->retrieve().isFailure() ) {
1121 if(m_provider->msg().level() <= MSG::ERROR)
1122 m_provider->msg(MSG::ERROR) << " Unable to retrieve the TrigDecisionTool: Please check job options file" << endmsg;
1123 return;
1124 }
1125
1126 if(m_provider->msg().level() <= MSG::VERBOSE) {
1127 m_provider->msg(MSG::VERBOSE) << " Successfully retrieved the TrigDecisionTool" << endmsg;
1128 }
1129
1130
1132 if (m_provider->msg().level() <= MSG::VERBOSE) {
1133 std::vector<std::string> configuredChains = (*(m_tdt))->getListOfTriggers("L2_.*, EF_.*, HLT_.*");
1134
1135 m_provider->msg(MSG::VERBOSE) << "Configured chains" << endmsg;
1136 for ( unsigned i=0 ; i<configuredChains.size() ; i++ ) {
1137 if( m_provider->msg().level() <= MSG::VERBOSE)
1138 m_provider->msg(MSG::VERBOSE) << " Chain " << configuredChains[i] << endmsg;
1139 }
1140 }
1141
1142
1143 for ( unsigned ic=0 ; ic<m_chainNames.size() ; ic++ ) {
1144
1145 if ( ic>0 ) {
1146 m_provider->msg(MSG::WARNING) << "more than one chain configured for this analysis - skipping " << m_chainNames[ic] << endmsg;
1147 continue;
1148 }
1149
1150 m_provider->msg(MSG::VERBOSE) << "Analyse chain " << m_chainNames[ic] << endmsg;
1151
1152 // m_provider->msg(MSG::VERBOSE) << "--------------------------------------------------" << endmsg;
1153
1155
1156 if ( name()!="" ) folder_name = name();
1157 else folder_name = "HLT/TRIDT/IDMon";
1158
1160 if( m_testType != "" ) folder_name = folder_name + "/" + m_testType;
1161
1163
1164#if 0
1167
1168 if ( name().find("Shifter")!=std::string::npos || m_shifter ) {
1170 if ( m_chainNames.at(ic).tail().find("_FTF") != std::string::npos ) mongroup = folder_name + "/FTF";
1171 else if ( m_chainNames.at(ic).tail().find("_IDTrig") != std::string::npos ||
1172 m_chainNames.at(ic).tail().find("_EFID") != std::string::npos ) mongroup = folder_name + "/EFID";
1173 else if ( m_chainNames.at(ic).tail().find("InDetTrigParticle") != std::string::npos ) mongroup = folder_name + "/EFID_RUN1";
1174 else if ( m_chainNames.at(ic).tail().find("_GSF") != std::string::npos ) mongroup = folder_name + "/GSF";
1175 else mongroup = folder_name + "/Unknown";
1176
1177 if ( m_chainNames.at(ic).vtx()!="" ) mongroup += "/" + m_chainNames.at(ic).vtx();
1178
1179 }
1180#endif
1181 // else {
1183
1184 if ( m_chainNames[ic].head() == "" ) mongroup = folder_name + "/Fullscan";
1185 else mongroup = folder_name + "/" + m_chainNames[ic].head();
1186
1188
1189 if ( m_chainNames.at(ic).tail()!="" ) {
1190 track_collection = "/" + m_chainNames.at(ic).tail();
1191 if ( m_chainNames.at(ic).extra()!="" ) track_collection += "_" + m_chainNames.at(ic).extra();
1192 }
1193
1194 if ( m_chainNames.at(ic).roi()!="" ) {
1195 if ( track_collection!="" ) track_collection += "_" + m_chainNames[ic].roi();
1196 else track_collection = "/" + m_chainNames[ic].roi();
1197 }
1198
1199 if ( m_chainNames.at(ic).vtx()!="" ) {
1200 if ( track_collection!="" ) track_collection += "_" + m_chainNames[ic].vtx();
1201 else track_collection = "/" + m_chainNames[ic].vtx();
1202 }
1203
1205 if ( m_chainNames.at(ic).element()!="" ) {
1206 if ( track_collection!="" ) track_collection += "_" + m_chainNames[ic].element();
1207 else track_collection = "/" + m_chainNames[ic].element();
1208 }
1209
1211
1212 if ( !m_chainNames.at(ic).passed() ) mongroup += "/DTE";
1213
1214 // }
1215
1216 m_provider->msg(MSG::VERBOSE) << " book mongroup " << mongroup << endmsg;
1217
1218 m_manalysis = dynamic_cast<A*>(m_analysis);
1219
1220 if ( monTool() ) m_manalysis->set_monTool( monTool() );
1221
1222 m_analysis->initialise();
1223
1224 if(m_provider->msg().level() <= MSG::VERBOSE) {
1225 m_provider->msg(MSG::VERBOSE) << "AnalysisConfigR3_Tier0::book() done" << endmsg;
1226 }
1227 }
1228
1229 }
ToolHandle< GenericMonitoringTool > * monTool()
ToolHandle< Trig::TrigDecisionTool > * m_tdt
std::string head(std::string s, const std::string &pattern)
head of a string
std::string find(const std::string &s)
return a remapped string
Definition hcg.cxx:140

◆ containTracks()

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

Definition at line 208 of file T_AnalysisConfigR3_Tier0.h.

208{ 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 = AnalysisR3_Tier0>
virtual void T_AnalysisConfigR3_Tier0< T, A >::finalize ( )
inlineprotectedvirtual

Reimplemented from T_AnalysisConfig< T >.

Definition at line 1233 of file T_AnalysisConfigR3_Tier0.h.

1233 {
1234
1235 if(m_provider->msg().level() <= MSG::VERBOSE){
1236 m_provider->msg(MSG::VERBOSE) << "AnalysisConfigR3_Tier0::finalise() " << m_provider->name() << endmsg;
1237 }
1238
1239 m_analysis->finalise();
1240
1241 m_provider->msg(MSG::INFO) << m_provider->name() << " " << m_chainNames[0] << " \tNRois processed: " << m_NRois << "\tRef tracks: " << m_NRefTracks << "\tTestTracks: " << m_NTestTracks << endmsg;
1242
1243 if(m_provider->msg().level() <= MSG::VERBOSE) {
1244 m_provider->msg(MSG::VERBOSE) << m_provider->name() << " finalised" << endmsg;
1245 }
1246 }

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

◆ initialise()

template<typename T, typename A = AnalysisR3_Tier0>
void T_AnalysisConfigR3_Tier0< T, A >::initialise ( )
inline

Definition at line 185 of file T_AnalysisConfigR3_Tier0.h.

185 {
186
187 if ( m_tnp_flag ) {
188 if ( m_invmass==0 ) m_invmass = new TIDA::Histogram<float>( monTool(), "invmass" );
189 if ( m_invmass_obj==0 ) m_invmass_obj = new TIDA::Histogram<float>( monTool(), "invmass_obj" );
190 }
191
192 for ( size_t it=0 ; it<m_types.size() ; it++ ) {
193 if ( m_types[it]=="" ) m_offline_types.push_back( "InDetTrackParticles" );
194 else m_offline_types.push_back( m_types[it] );
195 }
196
197 if ( m_offline_types.empty() ) m_offline_types.push_back( "InDetTrackParticles" );
198
199 }
std::vector< std::string > m_offline_types
std::vector< std::string > m_types

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

◆ keepAllEvents()

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

Definition at line 274 of file T_AnalysisConfig.h.

◆ loop()

template<typename T, typename A = AnalysisR3_Tier0>
virtual void T_AnalysisConfigR3_Tier0< T, A >::loop ( )
inlineprotectedvirtual

this isn't working yet - will renable once we have a workaround

will need to add a vertex filter at some point probably

switch reference selector to truth if requested

this isn't working yet - will renable once we have a workaround if ( xbeam!=0 || ybeam!=0 ) { std::cerr << "Oh no ! setBeamLine() : " << xbeam << " " << ybeam << std::endl; pselectorRef->setBeamline( xbeam, ybeam ); }

now start everything going for this event properly ...

the fourth value will store the number of vertices

(obviously) get the event info

for debugging ...

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

for debugging ...

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

FIXME: most of the different truth selection can go

AOD

xAOD::TruthParticles

anything else?

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

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

do we still want to support Rec::TrackParticles ? Would this even still work ?

clone the asociator

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

a hack to fetch back the Rois with "_probe" in the name if the standard named RoiDescriptors are not actually present for this chain ...

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 - this shouldn't be needed now ...

check this is not a spurious TDT match

invalid feature links can happen for missing (or truncated) Aux containers

for debug ...

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

debug ...

get the beamline

the original code sets a class variable on the fill class this will not be reentrant, as another instance could overwrite it, but will keep it in for now. MAybe we could clone the analysis class each time we have an instance. Need to investigate whether such an event-by-event might be fast enough. Foe the time being, leave the original code here, but commented

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

should be included - but leave commented out here to allow study of rois with *no relevant truth particles !!!

stats book keeping

match test and reference tracks

this setting of the roi is not thread safe so it has been diabled for the time being in principle we may be able to remove it completely, but we need to check whether we can do without this functionality, so leave the code in place until we either fix it properly in the future, or determine that it is not needed

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

Implements T_AnalysisConfig< T >.

Definition at line 243 of file T_AnalysisConfigR3_Tier0.h.

243 {
244
246
247 if( m_provider->msg().level() <= MSG::VERBOSE) {
248 m_provider->msg(MSG::VERBOSE) << "AnalysisConfigR3_Tier0::loop() for " << T_AnalysisConfig<T>::m_analysisInstanceName << endmsg;
249 }
250
252 // get (offline) beam position
253 // double xbeam = 0;
254 // double ybeam = 0;
255
256#if 0
257
258 if ( m_first ) {
259
260 m_first = false;
261
262 if ( m_provider->msg().level() <= MSG::VERBOSE ) {
263 m_provider->msg(MSG::VERBOSE) << " using beam position\tx=" << xbeam << "\ty=" << ybeam << endmsg;
264
266
267 for ( unsigned i=0 ; i<configuredChains.size() ; i++ ) {
269 // std::cout << "Configured chain " << configuredChains[i] << std::endl;
270 m_provider->msg(MSG::VERBOSE) << "Chain " << configuredChains[i] << endmsg;
271 }
272 }
273
274 // std::cout << "\tloop() analyse chains " << m_chainNames.size() << std::endl;
275
276 }
277
278#endif
279
281
282 Filter_etaPT filter_etaPT( 5, 200 );
284
286 // Filter_Combined filterRef (&filter_offline, &filter_vertex);
287
288 int iRefFilter = 1;
289 int iTestFilter = 0;
290
291 if ( m_runPurity ) {
292 iRefFilter = 0;
293 iTestFilter = 1;
294 }
295
296
299
302
304
307
310
313
319
321
324
325 double beamline[4] = { 0, 0, 0, 0 };
326
327 // clear the ntuple TIDA::Event class
328 eventp->clear();
329
331
332 const xAOD::EventInfo* pEventInfo = 0;
333
334 unsigned run_number = 0;
335 unsigned long long event_number = 0;
336 unsigned lumi_block = 0;
337 unsigned bunch_crossing_id = 0;
338 unsigned time_stamp = 0;
339 double mu_val = 0;
340
342 // std::cout << "\tloop() get EventInfo" << std::endl;
343
344 if ( this->template retrieve( pEventInfo, "EventInfo" ).isFailure() ) {
345 m_provider->msg(MSG::WARNING) << "Failed to get EventInfo " << endmsg;
346 } else {
347
348 run_number = pEventInfo->runNumber();
349 event_number = pEventInfo->eventNumber();
350 lumi_block = pEventInfo->lumiBlock();
351 time_stamp = pEventInfo->timeStamp();
353 mu_val = pEventInfo->averageInteractionsPerCrossing();
354 }
355
356 if(m_provider->msg().level() <= MSG::VERBOSE){
357 m_provider->msg(MSG::VERBOSE) << "run " << run_number
358 << "\tevent " << event_number
359 << "\tlb " << lumi_block << endmsg;
360 }
361
362 // clear the ntuple TIDA::Event class
363 eventp->clear();
364
365 eventp->run_number(run_number);
366 eventp->event_number(event_number);
367 eventp->lumi_block(lumi_block);
368 eventp->time_stamp(time_stamp);
369 eventp->bunch_crossing_id(bunch_crossing_id);
370 eventp->mu(mu_val);
371
374
375 bool analyse = false;
376
377 // Check HLTResult
378
379 for ( unsigned ichain=0 ; ichain<m_chainNames.size() ; ichain++ ) {
380
381 const std::string& chainname = m_chainNames[ichain].head();
382
383 if ( chainname == "" ) analyse = true;
384 else {
385
386 //Only for trigger chains
387 if ( chainname.find("L2") == std::string::npos &&
388 chainname.find("EF") == std::string::npos &&
389 chainname.find("HLT") == std::string::npos ) continue;
390
391 if ( m_provider->msg().level() <= MSG::DEBUG ) {
392 m_provider->msg(MSG::DEBUG) << "Chain " << chainname
393 << "\tpass " << (*m_tdt)->isPassed(chainname)
394 << "\tpres " << (*m_tdt)->getPrescale(chainname) << endmsg;
395 }
396
398 // std::cout << "\tChain " << chainname << "\tpass " << (*m_tdt)->isPassed(chainname)
399 // << "\tpres " << (*m_tdt)->getPrescale(chainname) << std::endl;
400
401 if ( (*(m_tdt))->isPassed(chainname) ) analyse = true;
402
403 }
404
405 }
406
407
408 if ( !this->m_keepAllEvents && !analyse ) {
409 if(m_provider->msg().level() <= MSG::VERBOSE) {
410 m_provider->msg(MSG::VERBOSE) << "No chains passed unprescaled - not processing this event" << endmsg;
411 }
412 return;
413 }
414
415
417
418 selectorTruth.clear();
419
420 if(m_provider->msg().level() <= MSG::VERBOSE)
421 m_provider->msg(MSG::VERBOSE) << "MC Truth flag " << m_mcTruth << endmsg;
422
424
427
430
432
433 m_provider->msg(MSG::VERBOSE) << "fetching AOD Primary vertex container" << endmsg;
434
435 if ( !this->select( vertices, "PrimaryVertices" ) ) {
436 m_provider->msg(MSG::VERBOSE) << "could not retrieve the 'PrimaryVertices' vertex collection" << std::endl;
437 }
438
440
441 if ( m_mcTruth ) {
442 eventp->addChain( "Truth" );
443 eventp->back().addRoi(TIDARoiDescriptor());
444 eventp->back().back().addTracks(selectorTruth.tracks());
445 }
446
448
449 if ( m_doOffline ) {
450 for ( unsigned i=0 ; i<vertices.size() ; i++ ) {
451 if(m_provider->msg().level() <= MSG::VERBOSE)
452 m_provider->msg(MSG::VERBOSE) << "vertex " << i << " " << vertices[i] << endmsg;
453 eventp->addVertex(vertices[i]);
454 }
455 }
456
457
458
460
464
467
468 offline_tracks.clear();
469 electron_tracks.clear();
470 muon_tracks.clear();
471
472 ref_tracks.clear();
473 test_tracks.clear();
474
475 // offline track retrieval now done once for each chain rather than each roi
476 if ( m_provider->msg().level() <= MSG::VERBOSE )
477 m_provider->msg(MSG::VERBOSE) << "MC Truth flag " << m_mcTruth << endmsg;
478
479 bool foundTruth = false;
480
482
483 if ( m_mcTruth ) {
484
485 filter_truth.setRoi( 0 ); // don't filter on RoI yet (or until needed)
486
487 selectorTruth.clear();
488
489 if ( m_provider->msg().level() <= MSG::VERBOSE )
490 m_provider->msg(MSG::VERBOSE) << "getting Truth" << endmsg;
491
492 if ( m_provider->evtStore()->template contains<TruthParticleContainer>("INav4MomTruthEvent") ) {
493 //ESD
494 this->template selectTracks<TruthParticleContainer>( &selectorTruth, "INav4MomTruthEvent" );
495 foundTruth = true;
496 }
497 else if ( m_provider->evtStore()->template contains<TruthParticleContainer>("SpclMC") ) {
499 this->template selectTracks<TruthParticleContainer>( &selectorTruth, "SpclMC");
500 foundTruth = true;
501 }
502 else if ( m_provider->evtStore()->template contains<xAOD::TruthParticleContainer>("TruthParticles") ) {
504 this->template selectTracks<xAOD::TruthParticleContainer>( &selectorTruth, "TruthParticles");
505 foundTruth = true;
506 }
507 else if ( m_provider->evtStore()->template contains<TruthParticleContainer>("") ) {
510 foundTruth = true;
511 }
512 else
513 if ( m_provider->msg().level() <= MSG::VERBOSE ) {
514 m_provider->msg(MSG::VERBOSE) << "Truth not found - none whatsoever!" << endmsg;
515 }
516 }
517
518 if ( m_mcTruth && !foundTruth ) {
519
520 if ( m_provider->msg().level() <= MSG::VERBOSE ) {
521 m_provider->msg(MSG::VERBOSE) << "getting Truth" << endmsg;
522 }
523
525
526 const McEventCollection* mcevent = nullptr;
527
529
530 std::string keys[4] = { "GEN_AOD", "TruthEvent", "", "G4Truth" };
531
532 std::string key = "";
533
534 bool foundcollection = false;
535
536 for ( int ik=0 ; ik<4 ; ik++ ) {
537
538 if ( m_provider->msg().level() <= MSG::VERBOSE ) {
539 m_provider->msg(MSG::VERBOSE) << "Try McEventCollection: " << keys[ik] << endmsg;
540 }
541
542 if ( !m_provider->evtStore()->template contains<McEventCollection>(keys[ik]) ) {
543 if( m_provider->msg().level() <= MSG::VERBOSE )
544 m_provider->msg(MSG::VERBOSE) << "No McEventCollection: " << keys[ik] << endmsg;
545 continue;
546 }
547
548 if ( m_provider->msg().level() <= MSG::VERBOSE )
549 m_provider->msg(MSG::VERBOSE) << "evtStore()->retrieve( mcevent, " << keys[ik] << " )" << endmsg;
550
551 if ( this->template retrieve( mcevent, keys[ik] ).isFailure() ) {
552 if ( m_provider->msg().level() <= MSG::VERBOSE )
553 m_provider->msg(MSG::VERBOSE) << "Failed to get McEventCollection: " << keys[ik] << endmsg;
554 }
555 else {
557 key = keys[ik];
558 if(m_provider->msg().level() <= MSG::VERBOSE)
559 m_provider->msg(MSG::VERBOSE) << "Found McEventCollection: " << key << endmsg;
560 foundcollection = true;
561 break;
562 }
563 }
564
566 if ( !foundcollection ) {
567 if(m_provider->msg().level() <= MSG::VERBOSE)
568 m_provider->msg(MSG::WARNING) << "No MC Truth Collections of any sort, whatsoever!!!" << endmsg;
569
570 // m_tree->Fill();
571 // return StatusCode::FAILURE;
572
573 return;
574 }
575
576 if ( m_provider->msg().level() <= MSG::VERBOSE ) {
577 m_provider->msg(MSG::VERBOSE) << "Found McEventCollection: " << key << "\tNevents " << mcevent->size() << endmsg;
578 }
579
582
583 unsigned ie = 0;
584 unsigned ip = 0;
585
586 unsigned ie_ip = 0;
587
588 while ( evitr!=evend ) {
589
590 int ipc = 0;
591
593
594 //The logic should be clarified here
595 if ( pid!=0 ) {
596
597 // For HepMC2-based builds the following two functions return
598 // GenEvent::particle_const_iterator
599 // while for HepMC3-based builds they return
600 // std::vector<HepMC3::ConstGenParticlePtr>::const_iterator
601 // see AtlasHepMC/GenEvent.h for function definitions.
602 auto pitr(HepMC::begin(**evitr));
603 const auto pend(HepMC::end(**evitr));
604
605 while ( pitr!=pend ) {
606
607 selectorTruth.selectTrack( *pitr++ );
608
609 ++ipc;
610
611 }
612
613 }
614 ++ie;
615 ++evitr;
616
617 if ( ipc>0 ) {
619 // m_provider->msg(MSG::VERBOSE) << "Found " << ie << "\tpid " << pid << "\t with " << ip << " TruthParticles (GenParticles)" << endmsg;
620 ++ie_ip;
621 ip += ipc;
622 }
623 }
624
625 if(m_provider->msg().level() <= MSG::VERBOSE){
626 m_provider->msg(MSG::VERBOSE) << "Found " << ip << " TruthParticles (GenParticles) in " << ie_ip << " GenEvents out of " << ie << endmsg;
627 m_provider->msg(MSG::VERBOSE) << "selected " << selectorTruth.size() << " TruthParticles (GenParticles)" << endmsg;
628 }
629
630 if(selectorTruth.size() > 0) foundTruth = true;
631
632 if ( !(ip>0) ) {
633 if (m_provider->msg().level() <= MSG::VERBOSE) m_provider->msg(MSG::WARNING) << "NO TRUTH PARTICLES - returning" << endmsg;
634 return;
635 }
636
637 }
638
639 if ( m_doOffline && !m_mcTruth) {
640
641 bool found_offline = false;
642
643 for ( size_t it=0 ; it<m_offline_types.size() ; it++ ) {
647 found_offline = true;
648 }
649 else {
650 m_provider->msg(MSG::WARNING) << "Offline tracks not found: " << m_offline_types[it] << endmsg;
651 }
652 }
653
654 if ( !found_offline ) {
655 if (m_provider->evtStore()->template contains<Rec::TrackParticleContainer>("TrackParticleCandidate") ) {
657 this->template selectTracks<Rec::TrackParticleContainer>( pselectorRef, "TrackParticleCandidate" );
658 }
659 else {
660 m_provider->msg(MSG::WARNING) << "Offline tracks not found: " << "TrackParticleCandidate" << endmsg;
661 }
662 }
663
664 }
665
667
669
670 // std::cout << "\tloop() loop over chains proper ..." << std::endl;
671
673 for ( unsigned ichain=0 ; ichain<m_chainNames.size() ; ichain++ ) {
674
676
677 // std::string& chainname = chains[ichain];
678 const std::string& chainname = m_chainNames[ichain].head();
679 const std::string& key = m_chainNames[ichain].tail();
680 const std::string& vtx_name = m_chainNames[ichain].vtx();
681
682 // Not used left just in case
683 // const std::string& roi_name = m_chainNames[ichain].roi();
684 // const std::string& te_name = m_chainNames[ichain].element();
685 m_pTthreshold = 0;
686
687 if ( m_chainNames[ichain].postcount() ) {
688 std::string ptvalue = m_chainNames[ichain].postvalue("pt");
690 }
691
692
694
696
698 // if ( decisiontype==TrigDefs::requireDecision ) std::cout << "\tSUTT TrigDefs::requireDecision " << decisiontype << std::endl;
699 // if ( decisiontype==TrigDefs::Physics ) std::cout << "\tSUTT TrigDefs::Physics " << decisiontype << std::endl;
700
701 if ( chainname!="" && m_provider->msg().level() <= MSG::VERBOSE ) {
702
703 m_provider->msg(MSG::VERBOSE) << "status for chain " << chainname
704 << "\tpass " << (*m_tdt)->isPassed(chainname)
705 << "\tprescale " << (*m_tdt)->getPrescale(chainname) << endmsg;
706
707 m_provider->msg(MSG::VERBOSE) << "fetching features for chain " << chainname << endmsg;
708
709 m_provider->msg(MSG::VERBOSE) << chainname << "\tpassed: " << (*m_tdt)->isPassed( chainname ) << endmsg;
710 }
711
713 // std::cout << "\tstatus for chain " << chainname
714 // << "\tpass " << (*m_tdt)->isPassed( chainname )
715 // << "\tpassdt " << (*m_tdt)->isPassed( chainname, decisiontype )
716 // << "\tprescale " << (*m_tdt)->getPrescale( chainname ) << std::endl;
717
718
719 // m_provider->msg(MSG::INFO) << chainname << "\tpassed: " << (*m_tdt)->isPassed( chainname ) << "\t" << m_chainNames[ichain] << "\trun " << run_number << "\tevent " << event_number << endmsg;
720
721
722 if ( chainname!="" && !this->m_keepAllEvents && !(*m_tdt)->isPassed( chainname, decisiontype ) ) continue;
723
726 // Trig::FeatureContainer f = (*m_tdt)->features( chainname, TrigDefs::alsoDeactivateTEs);
727
730
731 // tag and probe analysis processes multiple chains passed in the tag and probe tool at once so loop over vector of chains
733
734 if ( !m_tnp_flag ) {
735 chainNames.push_back(m_chainNames[ichain].raw()) ;
736 }
737 else {
738 chainNames.push_back(pTnP_tool->tag());
739 chainNames.push_back(pTnP_tool->probe());
740 }
741
742 // loop over new chainNames vector but doing the same stuff
743 for ( size_t i=0 ; i<chainNames.size() ; i++ ) {
744
747
748 eventp->addChain( chainNames[i] );
749
750 TIDA::Chain& chain = eventp->back();
751
752 if ( chainName == "" ) {
753
755
756 pselectorTest->clear();
757
759
760 // TIDARoiDescriptor roifs(true);
761
762 // chain.addRoi( roifs );
763
764 chain.addRoi( TIDARoiDescriptor(true) );
765
766 if ( m_provider->evtStore()->template contains<xAOD::TrackParticleContainer>(key) ) {
769 }
770
772
773 chain.back().addTracks(testtracks);
774
775 if ( vtx_name!="" ) {
776
778
779 m_provider->msg(MSG::VERBOSE) << "\tFetch xAOD::VertexContainer with key " << vtx_name << endmsg;
780
782
783 if ( this->select( tidavertices, vtx_name ) ) chain.back().addVertices( tidavertices );
784 }
785
786
787 // if ( roiInfo ) delete roiInfo;
788
789 }
790 else {
791
793
794 //std::string roi_key = m_chainNames[ichain].roi();
795
797
799
801
803
804 int leg = -1;
805
806 if ( chainConfig.element()!="" ) {
807 leg = std::atoi(chainConfig.element().c_str());
808 }
809
811
815 rgex,
817 "roi",
818 leg ) );
819
822
823 if ( rois.empty() ) {
824 if ( !rgex.empty() ) {
825 rgex += "_probe";
828 rgex,
830 "roi",
831 leg ) );
832 }
833 }
834
835 int iroi = 0;
836
838
839 iroi++;
840
844
845 if ( roi_key=="SuperRoi" && iroi>1 ) continue;
846
847 // std::cout << "\troi: get link " << roi_key << " ..." << std::endl;
848
850
852 if ( roi_key!="" && roi_link.dataID()!=rgex ) continue;
853
855 if ( !roi_link.isValid() ) continue;
856
857 const TrigRoiDescriptor* const* roiptr = roi_link.cptr();
858
859 if ( roiptr == 0 ) continue;
860
861
863 // std::cout << "\troi: link deref ..." << *roiptr << std::endl;
864
865 if (m_provider->msg().level() <= MSG::VERBOSE) {
866 m_provider->msg(MSG::VERBOSE) << " RoI descriptor for seeded chain " << chainname << " " << **roiptr << endmsg;
867 }
868
870
871 // if ( dbg ) std::cout << "\troi " << iroi << " " << *roiInfo << std::endl;
872
874
875 pselectorTest->clear();
876
878
879 // beamspot stuff not needed for xAOD::TrackParticles
880
882
883 chain.addRoi( *roiInfo );
884
886
888
889 chain.back().addTracks(testtracks);
890
891
893
894 if ( vtx_name!="" ) {
895
897
899
900 chain.back().addVertices( tidavertices );
901
902 }
903
904
905#if 0
906 if ( dbg ) {
907 std::cout << "\tTIDA analysis for chain: " << chainname << "\t key: " << key << "\t" << **roiptr << std::endl;
908 std::cout << "\tcollections: " << chain.back() << std::endl;
909 }
910#endif
911
912 delete roiInfo;
913
914 }
915
916
917 }
918
919 } // end of loop chainNames vector loop
920
921
922 if ( m_provider->msg().level() <= MSG::VERBOSE ) {
923 m_provider->msg(MSG::VERBOSE) << "event: " << *eventp << endmsg;
924 }
925
926 }
927
928 // close previous loop over chains and open new one
929
930 for ( unsigned ichain=0 ; ichain<eventp->size() ; ichain++ ) {
931
932 TIDA::Chain& chain = (*eventp)[ichain];
934 const std::string& vtx_name = chainConfig.vtx();
935
936 // skip tag chains to avoid performing standard analysis on them (done for tnp at the same time as probes)
937 if ( m_tnp_flag && chainConfig.extra().find("_tag")!=std::string::npos ) continue ;
938
940
941 if (m_tnp_flag) {
942 // needs to be done AFTER retrieving offline tracks as pselectorRef passed as arguement, hence restructuring
944 }
945 else {
946 rois.reserve( chain.size() );
947 for ( size_t ir=0 ; ir<chain.size() ; ir++ ) {
948 rois.push_back( &(chain.rois()[ir]) );
949 }
950 }
951
952 // now loop over the rois (again)
953
954 for ( unsigned iroi=0 ; iroi<rois.size() ; iroi++ ) {
955
956 if ( this->filterOnRoi() ) {
957 filterRef.setRoi( &(rois.at(iroi)->roi() ) );
958 filterRef.containtracks( m_containTracks );
959 }
960 else filterRef.setRoi( 0 );
961
962 test_tracks.clear();
963
964 // this block is before the track retrieval in the original, is it working the same here?
965
979
980 if ( m_provider->msg().level() <= MSG::VERBOSE )
981 m_provider->msg(MSG::VERBOSE) << "MC Truth flag " << m_mcTruth << endmsg;
982
983 if ( m_mcTruth ) {
984 if ( this->filterOnRoi() ) filter_truth.setRoi( &(rois.at(iroi)->roi() ) );
986 }
987 else { // ie. if ( m_doOffline )
988 ref_tracks = pselectorRef->tracks(&filterRef) ;
989 }
990
991 if ( m_provider->msg().level() <= MSG::VERBOSE ) {
992 m_provider->msg(MSG::VERBOSE) << "ref tracks.size() " << pselectorRef->tracks().size() << endmsg;
993 for ( int ii=pselectorRef->tracks().size() ; ii-- ; ) {
994 m_provider->msg(MSG::VERBOSE) << " ref track " << ii << " " << *pselectorRef->tracks()[ii] << endmsg;
995 }
996 }
997
998 test_tracks.clear();
999
1000
1001 for ( unsigned itrk=0 ; itrk<rois.at(iroi)->tracks().size() ; itrk++ ) {
1002 test_tracks.push_back(&(rois.at(iroi)->tracks().at(itrk)));
1003 }
1004
1006 // std::cout << "sutt track multiplicities: offline " << offline_tracks.size() << "\ttest " << test_tracks.size() << std::endl;
1007
1009
1010 beamline[0] = pselectorTest->getBeamX();
1011 beamline[1] = pselectorTest->getBeamY();
1012 beamline[2] = pselectorTest->getBeamZ();
1013
1014 beamline[3] = vertices.size();
1015
1023 // m_manalysis->setvertices( vertices.size() ); /// what is this for ??? /// is this thread safe ???
1024
1027
1028 if ( m_runPurity ) {
1029
1030 if ( this->getUseHighestPT() ) HighestPTOnly( test_tracks );
1031
1033
1035 m_NRois++;
1036 m_NRefTracks += test_tracks.size();
1037 m_NTestTracks += ref_tracks.size();
1038
1041
1043
1044 }
1045 else {
1046
1048 if ( this->getUseHighestPT() ) HighestPTOnly( ref_tracks );
1049
1051
1053
1056 // if ( ref_tracks.size()==0 ) continue;
1057
1059 m_NRois++;
1060 m_NRefTracks += ref_tracks.size();
1061 m_NTestTracks += test_tracks.size();
1062
1065
1070 // m_manalysis->setroi( &rois.at(iroi)->roi() );
1071 m_manalysis->execute( ref_tracks, test_tracks, associator.get(), eventp, beamline, &(rois.at(iroi)->roi()) );
1072
1073 if ( vtx_name!="" ) {
1075 std::vector<TIDA::Vertex> vr = rois.at(iroi)->vertices();
1077 for ( unsigned iv=0 ; iv<vr.size() ; iv++ ) vtx_rec.push_back( &vr[iv] );
1078
1080 if ( this->getVtxIndex()<0 ) {
1081 for ( unsigned iv=0 ; iv<vertices.size() ; iv++ ) vtx.push_back( &vertices[iv] );
1082 }
1083 else {
1084 if ( vertices.size()>unsigned(this->getVtxIndex()) ) vtx.push_back( &vertices[this->getVtxIndex()] );
1085 }
1086
1087 m_manalysis->execute_vtx( vtx, vtx_rec, eventp );
1088 }
1089
1090 }
1091
1092 if ( m_manalysis->debug() ) {
1093 m_provider->msg(MSG::INFO) << "Missing track for " << m_chainNames[ichain]
1094 << "\trun " << run_number
1095 << "\tevent " << event_number
1096 << "\tlb " << lumi_block << endmsg;
1097 }
1098
1099 }
1100
1101 }
1102
1103 // delete associator;
1104
1105 if ( m_provider->msg().level() <= MSG::VERBOSE ) {
1106 m_provider->msg(MSG::VERBOSE) << "\n\nEvent " << *eventp << endmsg;
1107 }
1108
1109 }
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
bool selectTracks(TrigTrackSelector *selector, const ElementLink< TrigRoiDescriptorCollection > &roi_link, const std::string &key="")
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 = AnalysisR3_Tier0>
ToolHandle< GenericMonitoringTool > * T_AnalysisConfigR3_Tier0< T, A >::monTool ( )
inline

Definition at line 222 of file T_AnalysisConfigR3_Tier0.h.

222{ 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 = AnalysisR3_Tier0>
void T_AnalysisConfigR3_Tier0< T, A >::set_monTool ( ToolHandle< GenericMonitoringTool > * m)
inline

Definition at line 220 of file T_AnalysisConfigR3_Tier0.h.

220{ 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; }

◆ setMCTruthRef()

template<typename T, typename A = AnalysisR3_Tier0>
void T_AnalysisConfigR3_Tier0< T, A >::setMCTruthRef ( bool b)
inline

Definition at line 214 of file T_AnalysisConfigR3_Tier0.h.

214{ m_mcTruth=b; }

◆ setOfflineRef()

template<typename T, typename A = AnalysisR3_Tier0>
void T_AnalysisConfigR3_Tier0< T, A >::setOfflineRef ( bool b)
inline

Definition at line 216 of file T_AnalysisConfigR3_Tier0.h.

216{ m_doOffline=b; }

◆ setParentPdgID()

template<typename T, typename A = AnalysisR3_Tier0>
void T_AnalysisConfigR3_Tier0< T, A >::setParentPdgID ( int i = 0)
inline

Definition at line 212 of file T_AnalysisConfigR3_Tier0.h.

212{ m_parent_pdgID=i; }

◆ setPdgID()

template<typename T, typename A = AnalysisR3_Tier0>
void T_AnalysisConfigR3_Tier0< T, A >::setPdgID ( int i = 0)
inline

Definition at line 210 of file T_AnalysisConfigR3_Tier0.h.

210{ m_pdgID=i; }

◆ setRequireDecision()

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

Definition at line 285 of file T_AnalysisConfig.h.

◆ setRunPurity()

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

Definition at line 202 of file T_AnalysisConfigR3_Tier0.h.

202{ m_runPurity=b; }

◆ setShifter()

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

Definition at line 204 of file T_AnalysisConfigR3_Tier0.h.

204{ m_shifter=b; }

◆ setTypes()

template<typename T, typename A = AnalysisR3_Tier0>
void T_AnalysisConfigR3_Tier0< T, A >::setTypes ( const std::vector< std::string > & t)
inline

Definition at line 218 of file T_AnalysisConfigR3_Tier0.h.

218{ m_types=t; }

◆ 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 = AnalysisR3_Tier0>
void T_AnalysisConfigR3_Tier0< T, A >::useBeamCondSvc ( bool b)
inline

Definition at line 206 of file T_AnalysisConfigR3_Tier0.h.

206{ m_useBeamCondSvc = b; }

Member Data Documentation

◆ m_analyses

template<typename T, typename A = AnalysisR3_Tier0>
std::vector<A*> T_AnalysisConfigR3_Tier0< T, A >::m_analyses
protected

Definition at line 1254 of file T_AnalysisConfigR3_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 = AnalysisR3_Tier0>
std::vector<ChainString> T_AnalysisConfigR3_Tier0< T, A >::m_chainNames
protected

Definition at line 1253 of file T_AnalysisConfigR3_Tier0.h.

◆ m_containTracks

template<typename T, typename A = AnalysisR3_Tier0>
bool T_AnalysisConfigR3_Tier0< T, A >::m_containTracks
protected

Definition at line 1286 of file T_AnalysisConfigR3_Tier0.h.

◆ m_doBjets

template<typename T, typename A = AnalysisR3_Tier0>
bool T_AnalysisConfigR3_Tier0< T, A >::m_doBjets
protected

Definition at line 1261 of file T_AnalysisConfigR3_Tier0.h.

◆ m_doElectrons

template<typename T, typename A = AnalysisR3_Tier0>
bool T_AnalysisConfigR3_Tier0< T, A >::m_doElectrons
protected

Definition at line 1259 of file T_AnalysisConfigR3_Tier0.h.

◆ m_doMuons

template<typename T, typename A = AnalysisR3_Tier0>
bool T_AnalysisConfigR3_Tier0< T, A >::m_doMuons
protected

Definition at line 1258 of file T_AnalysisConfigR3_Tier0.h.

◆ m_doOffline

template<typename T, typename A = AnalysisR3_Tier0>
bool T_AnalysisConfigR3_Tier0< T, A >::m_doOffline
protected

Definition at line 1257 of file T_AnalysisConfigR3_Tier0.h.

◆ m_doTaus

template<typename T, typename A = AnalysisR3_Tier0>
bool T_AnalysisConfigR3_Tier0< T, A >::m_doTaus
protected

Definition at line 1260 of file T_AnalysisConfigR3_Tier0.h.

◆ m_doTauThreeProng

template<typename T, typename A = AnalysisR3_Tier0>
bool T_AnalysisConfigR3_Tier0< T, A >::m_doTauThreeProng
protected

Definition at line 1262 of file T_AnalysisConfigR3_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 = AnalysisR3_Tier0>
bool T_AnalysisConfigR3_Tier0< T, A >::m_first
protected

Definition at line 1284 of file T_AnalysisConfigR3_Tier0.h.

◆ m_genericFlag

int T_AnalysisConfig< T >::m_genericFlag
protectedinherited

Definition at line 967 of file T_AnalysisConfig.h.

◆ m_invmass

template<typename T, typename A = AnalysisR3_Tier0>
TIDA::Histogram<float>* T_AnalysisConfigR3_Tier0< T, A >::m_invmass
protected

Definition at line 1294 of file T_AnalysisConfigR3_Tier0.h.

◆ m_invmass_obj

template<typename T, typename A = AnalysisR3_Tier0>
TIDA::Histogram<float>* T_AnalysisConfigR3_Tier0< T, A >::m_invmass_obj
protected

Definition at line 1295 of file T_AnalysisConfigR3_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_manalysis

template<typename T, typename A = AnalysisR3_Tier0>
A* T_AnalysisConfigR3_Tier0< T, A >::m_manalysis

Definition at line 226 of file T_AnalysisConfigR3_Tier0.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 = AnalysisR3_Tier0>
ToolHandle<GenericMonitoringTool>* T_AnalysisConfigR3_Tier0< T, A >::m_monTool
protected

Definition at line 1292 of file T_AnalysisConfigR3_Tier0.h.

◆ m_NRefTracks

template<typename T, typename A = AnalysisR3_Tier0>
int T_AnalysisConfigR3_Tier0< T, A >::m_NRefTracks
protected

Definition at line 1275 of file T_AnalysisConfigR3_Tier0.h.

◆ m_NRois

template<typename T, typename A = AnalysisR3_Tier0>
int T_AnalysisConfigR3_Tier0< T, A >::m_NRois
protected

output stats

Definition at line 1274 of file T_AnalysisConfigR3_Tier0.h.

◆ m_NTestTracks

template<typename T, typename A = AnalysisR3_Tier0>
int T_AnalysisConfigR3_Tier0< T, A >::m_NTestTracks
protected

Definition at line 1276 of file T_AnalysisConfigR3_Tier0.h.

◆ m_offline_types

template<typename T, typename A = AnalysisR3_Tier0>
std::vector<std::string> T_AnalysisConfigR3_Tier0< T, A >::m_offline_types
protected

Definition at line 1265 of file T_AnalysisConfigR3_Tier0.h.

◆ m_outputFileName

template<typename T, typename A = AnalysisR3_Tier0>
std::string T_AnalysisConfigR3_Tier0< T, A >::m_outputFileName
protected

Definition at line 1268 of file T_AnalysisConfigR3_Tier0.h.

◆ m_parent_pdgID

template<typename T, typename A = AnalysisR3_Tier0>
int T_AnalysisConfigR3_Tier0< T, A >::m_parent_pdgID
protected

Definition at line 1271 of file T_AnalysisConfigR3_Tier0.h.

◆ m_pdgID

template<typename T, typename A = AnalysisR3_Tier0>
int T_AnalysisConfigR3_Tier0< T, A >::m_pdgID
protected

Definition at line 1270 of file T_AnalysisConfigR3_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 = AnalysisR3_Tier0>
double T_AnalysisConfigR3_Tier0< T, A >::m_pTthreshold
protected

Definition at line 1282 of file T_AnalysisConfigR3_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 = AnalysisR3_Tier0>
bool T_AnalysisConfigR3_Tier0< T, A >::m_runPurity
protected

Definition at line 1278 of file T_AnalysisConfigR3_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 = AnalysisR3_Tier0>
bool T_AnalysisConfigR3_Tier0< T, A >::m_shifter
protected

Definition at line 1280 of file T_AnalysisConfigR3_Tier0.h.

◆ m_tauEtCutOffline

template<typename T, typename A = AnalysisR3_Tier0>
bool T_AnalysisConfigR3_Tier0< T, A >::m_tauEtCutOffline
protected

Definition at line 1263 of file T_AnalysisConfigR3_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 = AnalysisR3_Tier0>
std::string T_AnalysisConfigR3_Tier0< T, A >::m_testType
protected

Definition at line 1255 of file T_AnalysisConfigR3_Tier0.h.

◆ m_tnp_flag

template<typename T, typename A = AnalysisR3_Tier0>
bool T_AnalysisConfigR3_Tier0< T, A >::m_tnp_flag
protected

Definition at line 1290 of file T_AnalysisConfigR3_Tier0.h.

◆ m_TnP_tool

template<typename T, typename A = AnalysisR3_Tier0>
TagNProbe* T_AnalysisConfigR3_Tier0< T, A >::m_TnP_tool
protected

Definition at line 1288 of file T_AnalysisConfigR3_Tier0.h.

◆ m_types

template<typename T, typename A = AnalysisR3_Tier0>
std::vector<std::string> T_AnalysisConfigR3_Tier0< T, A >::m_types
protected

Definition at line 1266 of file T_AnalysisConfigR3_Tier0.h.

◆ m_useBeamCondSvc

template<typename T, typename A = AnalysisR3_Tier0>
bool T_AnalysisConfigR3_Tier0< T, A >::m_useBeamCondSvc
protected

Definition at line 1251 of file T_AnalysisConfigR3_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: