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::vector< std::vector< TrackFilter * > > m_filters
std::string m_refChainName
std::string m_refChainKey
std::string m_testChainName
std::string m_testChainKey
TrigTrackSelectorm_selectorRef
TrigTrackSelectorm_selectorTest
TrigTrackSelectorm_selectorSel
TrackAssociatorm_associator
TrackAnalysism_analysis
bool m_mcTruth
double m_beamX
double m_beamY
double m_beamZ
int m_genericFlag
std::string m_releaseData
bool m_keepAllEvents
bool m_useHighestPT
int m_vtxIndex
bool m_filterOnRoi
bool m_requireDecision

Detailed Description

template<typename T, typename A = AnalysisR3_Tier0>
class T_AnalysisConfigR3_Tier0< T, A >

Definition at line 89 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 100 of file T_AnalysisConfigR3_Tier0.h.

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

174 {
175 if ( m_TnP_tool ) delete m_TnP_tool;
176 if ( m_invmass ) delete m_invmass;
177 if ( m_invmass_obj ) delete m_invmass_obj;
178 }

Member Function Documentation

◆ addReferenceChain()

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

Definition at line 162 of file T_AnalysisConfig.h.

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

◆ addReferenceFilter()

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

Definition at line 171 of file T_AnalysisConfig.h.

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

◆ addSelectionChain()

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

Definition at line 166 of file T_AnalysisConfig.h.

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

◆ addSelectionFilter()

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

Definition at line 172 of file T_AnalysisConfig.h.

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

◆ addTestChain()

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

Definition at line 158 of file T_AnalysisConfig.h.

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

◆ addTestFilter()

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

Definition at line 170 of file T_AnalysisConfig.h.

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

◆ analysis()

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

Definition at line 217 of file T_AnalysisConfig.h.

217{return m_analysis;}
TrackAnalysis * m_analysis

◆ beamX()

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

Definition at line 225 of file T_AnalysisConfig.h.

225{ return m_beamX; }

◆ beamY()

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

Definition at line 226 of file T_AnalysisConfig.h.

226{ return m_beamY; }

◆ beamZ()

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

Definition at line 227 of file T_AnalysisConfig.h.

227{ return m_beamZ; }

◆ book()

template<typename T, typename A = 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 1109 of file T_AnalysisConfigR3_Tier0.h.

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

204{ m_containTracks = b; }

◆ execute()

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

Definition at line 184 of file T_AnalysisConfig.h.

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

◆ filterOnRoi()

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

Definition at line 243 of file T_AnalysisConfig.h.

◆ finalize()

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

Reimplemented from T_AnalysisConfig< T >.

Definition at line 1229 of file T_AnalysisConfigR3_Tier0.h.

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

◆ genericFlag()

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

Definition at line 229 of file T_AnalysisConfig.h.

◆ getBeamspot()

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

Definition at line 590 of file T_AnalysisConfig.h.

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

◆ getCollection()

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

new MT feature access

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

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

Definition at line 258 of file T_AnalysisConfig.h.

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

◆ getUseHighestPT()

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

Definition at line 238 of file T_AnalysisConfig.h.

◆ getVtxIndex()

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

Definition at line 241 of file T_AnalysisConfig.h.

◆ initialise()

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

Definition at line 181 of file T_AnalysisConfigR3_Tier0.h.

181 {
182
183 if ( m_tnp_flag ) {
184 if ( m_invmass==0 ) m_invmass = new TIDA::Histogram<float>( monTool(), "invmass" );
185 if ( m_invmass_obj==0 ) m_invmass_obj = new TIDA::Histogram<float>( monTool(), "invmass_obj" );
186 }
187
188 for ( size_t it=0 ; it<m_types.size() ; it++ ) {
189 if ( m_types[it]=="" ) m_offline_types.push_back( "InDetTrackParticles" );
190 else m_offline_types.push_back( m_types[it] );
191 }
192
193 if ( m_offline_types.empty() ) m_offline_types.push_back( "InDetTrackParticles" );
194
195 }
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 175 of file T_AnalysisConfig.h.

175 {
176 m_provider = p;
177 m_tdt = tdt;
178 if ( m_tdt==0 ) m_analysis->initialise();
179
180 }

◆ keepAllEvents()

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

Definition at line 235 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 239 of file T_AnalysisConfigR3_Tier0.h.

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

220{ return m_mcTruth; }

◆ monTool()

template<typename T, typename A = AnalysisR3_Tier0>
ToolHandle< GenericMonitoringTool > * T_AnalysisConfigR3_Tier0< T, A >::monTool ( )
inline

Definition at line 218 of file T_AnalysisConfigR3_Tier0.h.

218{ return m_monTool; }

◆ name()

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

Definition at line 194 of file T_AnalysisConfig.h.

std::string m_analysisInstanceName

◆ processElectrons()

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

select offline electrons

Definition at line 659 of file T_AnalysisConfig.h.

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

◆ processMuons()

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

select offlinqe muons

Definition at line 745 of file T_AnalysisConfig.h.

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

◆ processTaus()

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

select offline taus

Definition at line 802 of file T_AnalysisConfig.h.

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

◆ referenceChains()

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

Definition at line 203 of file T_AnalysisConfig.h.

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

◆ releaseData()

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

Definition at line 232 of file T_AnalysisConfig.h.

232{ return m_releaseData; }

◆ requireDecision()

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

Definition at line 247 of file T_AnalysisConfig.h.

◆ retrieve()

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

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

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

Definition at line 529 of file T_AnalysisConfig.h.

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

◆ select()

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

variances

quality

Definition at line 301 of file T_AnalysisConfig.h.

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

◆ selectionChains()

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

Definition at line 210 of file T_AnalysisConfig.h.

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

◆ selectTracks()

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

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

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

Definition at line 400 of file T_AnalysisConfig.h.

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

◆ selectTracksNotEmpty()

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

Definition at line 564 of file T_AnalysisConfig.h.

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

◆ set_monTool()

template<typename T, typename A = AnalysisR3_Tier0>
void T_AnalysisConfigR3_Tier0< T, A >::set_monTool ( ToolHandle< GenericMonitoringTool > * m)
inline

Definition at line 216 of file T_AnalysisConfigR3_Tier0.h.

216{ m_monTool=m; }

◆ setBeamX()

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

Definition at line 222 of file T_AnalysisConfig.h.

222{ m_beamX=d; }

◆ setBeamY()

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

Definition at line 223 of file T_AnalysisConfig.h.

223{ m_beamY=d; }

◆ setBeamZ()

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

Definition at line 224 of file T_AnalysisConfig.h.

224{ m_beamZ=d; }

◆ setFilterOnRoi()

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

Definition at line 244 of file T_AnalysisConfig.h.

244{ return m_filterOnRoi=b; }

◆ setGenericFlag()

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

Definition at line 230 of file T_AnalysisConfig.h.

230{ m_genericFlag=b; }

◆ setMCTruth()

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

Definition at line 219 of file T_AnalysisConfig.h.

219{ m_mcTruth=b; }

◆ setMCTruthRef()

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

Definition at line 210 of file T_AnalysisConfigR3_Tier0.h.

210{ m_mcTruth=b; }

◆ setOfflineRef()

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

Definition at line 212 of file T_AnalysisConfigR3_Tier0.h.

212{ 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 208 of file T_AnalysisConfigR3_Tier0.h.

208{ 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 206 of file T_AnalysisConfigR3_Tier0.h.

206{ m_pdgID=i; }

◆ setRequireDecision()

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

Definition at line 246 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 198 of file T_AnalysisConfigR3_Tier0.h.

198{ m_runPurity=b; }

◆ setShifter()

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

Definition at line 200 of file T_AnalysisConfigR3_Tier0.h.

200{ 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 214 of file T_AnalysisConfigR3_Tier0.h.

214{ m_types=t; }

◆ setUseHighestPT()

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

Definition at line 237 of file T_AnalysisConfig.h.

237{ m_useHighestPT=b; }

◆ setVtxIndex()

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

Definition at line 240 of file T_AnalysisConfig.h.

240{ m_vtxIndex=i; }

◆ testChains()

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

Definition at line 196 of file T_AnalysisConfig.h.

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

◆ useBeamCondSvc()

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

Definition at line 202 of file T_AnalysisConfigR3_Tier0.h.

202{ 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 1250 of file T_AnalysisConfigR3_Tier0.h.

◆ m_analysis

TrackAnalysis* T_AnalysisConfig< T >::m_analysis
protectedinherited

Definition at line 921 of file T_AnalysisConfig.h.

◆ m_analysisInstanceName

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

Definition at line 901 of file T_AnalysisConfig.h.

◆ m_associator

TrackAssociator* T_AnalysisConfig< T >::m_associator
protectedinherited

Definition at line 920 of file T_AnalysisConfig.h.

◆ m_beamX

double T_AnalysisConfig< T >::m_beamX
protectedinherited

Definition at line 925 of file T_AnalysisConfig.h.

◆ m_beamY

double T_AnalysisConfig< T >::m_beamY
protectedinherited

Definition at line 925 of file T_AnalysisConfig.h.

◆ m_beamZ

double T_AnalysisConfig< T >::m_beamZ
protectedinherited

Definition at line 925 of file T_AnalysisConfig.h.

◆ m_chainNames

template<typename T, typename A = AnalysisR3_Tier0>
std::vector<ChainString> T_AnalysisConfigR3_Tier0< T, A >::m_chainNames
protected

Definition at line 1249 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 1282 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 1257 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 1255 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 1254 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 1253 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 1256 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 1258 of file T_AnalysisConfigR3_Tier0.h.

◆ m_filterOnRoi

bool T_AnalysisConfig< T >::m_filterOnRoi
protectedinherited

Definition at line 936 of file T_AnalysisConfig.h.

◆ m_filters

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

Definition at line 908 of file T_AnalysisConfig.h.

◆ m_first

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

Definition at line 1280 of file T_AnalysisConfigR3_Tier0.h.

◆ m_genericFlag

int T_AnalysisConfig< T >::m_genericFlag
protectedinherited

Definition at line 927 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 1290 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 1291 of file T_AnalysisConfigR3_Tier0.h.

◆ m_keepAllEvents

bool T_AnalysisConfig< T >::m_keepAllEvents
protectedinherited

Definition at line 930 of file T_AnalysisConfig.h.

◆ m_keys

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

Definition at line 906 of file T_AnalysisConfig.h.

◆ m_manalysis

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

Definition at line 222 of file T_AnalysisConfigR3_Tier0.h.

◆ m_mcTruth

bool T_AnalysisConfig< T >::m_mcTruth
protectedinherited

Definition at line 923 of file T_AnalysisConfig.h.

◆ m_monTool

template<typename T, typename A = AnalysisR3_Tier0>
ToolHandle<GenericMonitoringTool>* T_AnalysisConfigR3_Tier0< T, A >::m_monTool
protected

Definition at line 1288 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 1271 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 1270 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 1272 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 1261 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 1264 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 1267 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 1266 of file T_AnalysisConfigR3_Tier0.h.

◆ m_provider

T* T_AnalysisConfig< T >::m_provider
protectedinherited

Definition at line 893 of file T_AnalysisConfig.h.

◆ m_pTthreshold

template<typename T, typename A = AnalysisR3_Tier0>
double T_AnalysisConfigR3_Tier0< T, A >::m_pTthreshold
protected

Definition at line 1278 of file T_AnalysisConfigR3_Tier0.h.

◆ m_refChainKey

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

Definition at line 911 of file T_AnalysisConfig.h.

◆ m_refChainName

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

Definition at line 910 of file T_AnalysisConfig.h.

◆ m_releaseData

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

Definition at line 928 of file T_AnalysisConfig.h.

◆ m_requireDecision

bool T_AnalysisConfig< T >::m_requireDecision
protectedinherited

Definition at line 938 of file T_AnalysisConfig.h.

◆ m_runPurity

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

Definition at line 1274 of file T_AnalysisConfigR3_Tier0.h.

◆ m_selectorRef

TrigTrackSelector* T_AnalysisConfig< T >::m_selectorRef
protectedinherited

Definition at line 916 of file T_AnalysisConfig.h.

◆ m_selectorSel

TrigTrackSelector* T_AnalysisConfig< T >::m_selectorSel
protectedinherited

Definition at line 918 of file T_AnalysisConfig.h.

◆ m_selectorTest

TrigTrackSelector* T_AnalysisConfig< T >::m_selectorTest
protectedinherited

Definition at line 917 of file T_AnalysisConfig.h.

◆ m_shifter

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

Definition at line 1276 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 1259 of file T_AnalysisConfigR3_Tier0.h.

◆ m_tdt

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

Definition at line 895 of file T_AnalysisConfig.h.

◆ m_testChainKey

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

Definition at line 914 of file T_AnalysisConfig.h.

◆ m_testChainName

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

Definition at line 913 of file T_AnalysisConfig.h.

◆ m_testType

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

Definition at line 1251 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 1286 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 1284 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 1262 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 1247 of file T_AnalysisConfigR3_Tier0.h.

◆ m_useHighestPT

bool T_AnalysisConfig< T >::m_useHighestPT
protectedinherited

Definition at line 932 of file T_AnalysisConfig.h.

◆ m_vtxIndex

int T_AnalysisConfig< T >::m_vtxIndex
protectedinherited

Definition at line 934 of file T_AnalysisConfig.h.


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