|
ATLAS Offline Software
|
Go to the documentation of this file.
20 #include "GaudiKernel/MsgStream.h"
21 #include "Gaudi/Property.h"
22 #include "GaudiKernel/TypeNameString.h"
28 #include "GaudiKernel/ITHistSvc.h"
48 #include "TLorentzVector.h"
59 ISvcLocator* pSvcLocator):
61 m_refittedTracks_no1{},
62 m_refittedTracks_no2{},
64 m_TrackRefitter_no2(
""),
65 m_trigDec(
"Trig::TrigDecisionTool/TrigDecisionTool"),
66 m_refitEverything(
true),
68 m_validationMode(
true),
69 m_fillDetailedTree(
false),
70 m_validationTreeName(
"EGrefitter"),
71 m_validationTreeDescription(
"egamma track refitter caches"),
72 m_validationTreeFolder(
"/eoverpValidation/efitterValidation"),
85 m_ZeeLooseMassOS_Cluster(
nullptr),
86 m_ZeeLooseMassSS_Cluster(
nullptr),
87 m_ZeeMediumMassOS_Cluster(
nullptr),
88 m_ZeeMediumMassSS_Cluster(
nullptr),
89 m_ZeeMediumOS_ClusterPtEta(
nullptr),
90 m_WenuLooseElectronET(
nullptr),
91 m_WenuTight_Met(
nullptr),
92 m_WenuTight_MT(
nullptr),
93 m_WenuTightMet_MT(
nullptr),
94 m_WenuTightElectronET(
nullptr),
95 m_WenuTightW_PT(
nullptr),
96 m_WenuTightElectron_PTEtaPos(
nullptr),
97 m_WenuTightElectron_PTEtaNeg(
nullptr),
98 m_smallValidationTreeName(
"EGrefitterSmall"),
99 m_smallValidationTreeDescription(
"Small Tree for E/p fits"),
100 m_smallValidationTreeFolder(
"/eoverpValidation2/efitterValidation2"),
101 m_smallValidationTree(
nullptr),
105 m_smallClusterEnergy{},
113 m_LHToolMedium2015{},
119 declareProperty(
"RefitTracks", m_refitEverything);
120 declareProperty(
"isDATA", m_isDATA);
121 declareProperty(
"ReFitterTool", m_TrackRefitter,
"ToolHandle for track fitter implementation");
122 declareProperty(
"ReFitterTool2", m_TrackRefitter_no2,
"ToolHandle for track fitter implementation");
123 declareProperty(
"TrigDecisionTool", m_trigDec,
"The TrigDecisionTool instance.");
124 declareProperty(
"InputElectronContainerName", m_InputElectronContainerName =
"Electrons");
125 declareProperty(
"InputJetContainerName", m_jetContainerName =
"AntiKt4LCTopoJets");
127 declareProperty(
"METFinalName", m_metRefFinalName=
"FinalClus");
128 declareProperty(
"MissingEtObjectName", m_missingEtObjectName =
"MET_Reference_AntiKt4LCTopo");
129 declareProperty(
"primaryVertexCollection", m_primaryVertexCollection =
"PrimaryVertices");
130 declareProperty(
"RefittedElectronTrackContainer1", m_OutputTrackCollectionName_no1=
"GSFTracks");
131 declareProperty(
"RefittedElectronTrackContainer2", m_OutputTrackCollectionName_no2=
"DNATracks");
132 declareProperty(
"ValidationMode", m_validationMode);
133 declareProperty(
"FillDetailedTree", m_fillDetailedTree);
134 declareProperty(
"ElectronLikelihoodTune", m_lhTune=
"mc15_20150712");
160 return StatusCode::FAILURE;
167 return StatusCode::FAILURE;
174 return StatusCode::FAILURE;
241 "HLT_e24_lhmedium_idperf_L1EM20VH",
242 "HLT_e24_medium_L1EM18VH",
253 std::string FitterNames[3] = {
"GX2",
"Refitted1",
"Refitted2"};
358 if (tHistSvc.retrieve().isFailure()){
359 ATH_MSG_ERROR(
"initialize() Could not find Hist Service -> Switching ValidationMode Off !");
365 ATH_MSG_ERROR(
"initialize() Could not register the validation Tree -> Switching ValidationMode Off !");
370 ATH_MSG_ERROR(
"initialize() Could not register the validation Tree -> Switching ValidationMode Off !");
389 bool somethingFailed{};
403 if (somethingFailed)
ATH_MSG_ERROR(
"initialize() Could not register histogram ");
413 ATH_MSG_INFO(
"IDPerfMonEoverP::Initialize() -- Setting up electron LH tool.");
426 std::string confDir =
"ElectronPhotonSelectorTools/offline/"+
m_lhTune+
"/";
427 std::string configFileL = confDir+
"ElectronLikelihoodLooseOfflineConfig2015.conf";
428 std::string configFileM = confDir+
"ElectronLikelihoodMediumOfflineConfig2015.conf";
429 std::string configFileT = confDir+
"ElectronLikelihoodTightOfflineConfig2015.conf";
432 ATH_MSG_WARNING(
"Failure loading ConfigFile in loose electron likelihood tool.");
434 ATH_MSG_WARNING(
"Failure loading ConfigFile in medium electron likelihood tool.");
436 ATH_MSG_WARNING(
"Failure loading ConfigFile in tight electron likelihood tool.");
440 ATH_MSG_WARNING(
"Loose electron likelihood tool initialize() failed!");
443 ATH_MSG_WARNING(
"Medium electron likelihood tool initialize() failed!");
446 ATH_MSG_WARNING(
"Tight electron likelihood tool initialize() failed!");
448 return StatusCode::SUCCESS;
456 return StatusCode::SUCCESS;
465 std::map<const xAOD::TrackParticle*, VxPos > trackParticleVertexMap;
466 const xAOD::Vertex* primaryVertexFirstCandidate =
nullptr;
470 ATH_MSG_WARNING(
" Validation Mode has been turned off ALG will do not fill Ntuples" );
500 if (
sc!=StatusCode::SUCCESS){
503 return StatusCode::SUCCESS;
507 if (ElectronInput_container->
empty() ){
509 return StatusCode::SUCCESS;
517 electron_iterator iter = ElectronInput_container->
begin();
518 electron_iterator iterEnd = ElectronInput_container->
end();
522 for(; iter != iterEnd ; ++iter) {
552 ATH_MSG_DEBUG(
"Electron with no track particle?? Possibly Forward");
558 primaryVertexFirstCandidate,
585 if (
sc == StatusCode::SUCCESS){
586 Trk::Track* trkTrack= cache1.refittedTrack.release();
603 if (
sc == StatusCode::SUCCESS){
604 Trk::Track* trkTrack= cache2.refittedTrack.release();
626 for(
const auto & thisGoodElectron: goodElectrons){
629 (*ElectronInput_container)[thisGoodElectron]->trackParticle()->
track(),
631 if (
sc == StatusCode::SUCCESS){
632 Trk::Track* trkTrack= cache.refittedTrack.release();
633 selectedElectrons->push_back(trkTrack);
645 delete selectedElectrons;
646 return (StatusCode::FAILURE);
653 delete selectedElectrons;
654 return (StatusCode::FAILURE);
661 delete selectedElectrons;
662 return (StatusCode::FAILURE);
665 return StatusCode::SUCCESS;
671 if (isOriginal >= 0 && isOriginal <3){
688 ATH_MSG_DEBUG(
"No MeasuredPerigee - cannot add data to ntuple" );
745 for (
int j = 0 ; j <3 ; ++j){
772 for (
int j = 0 ; j < 50 ; ++j){
841 if (
sc.isFailure()) {
859 if(
sc.isFailure() || !jetTDS ) {
863 if (jetTDS->
empty())
return true;
864 bool cleanJet =
true;
865 for(
const auto* jet_elem : *jetTDS ) {
879 if (
sc.isFailure()) {
886 <<
" = " << vxContainer->
size() );
887 primaryVertexFirstCandidate =
std::begin(*vxContainer)[0];
889 for(
const auto* vxI : *vxContainer ) {
890 int type = (
int)(vxI)->vertexType();
893 const std::vector< ElementLink< xAOD::TrackParticleContainer > > tpLinks = vxI->
trackParticleLinks();
895 if(not tpLinks.empty()) {
896 nbtk = tpLinks.size();
897 for(
const auto& tp_elem : tpLinks ){
899 VxPos myVxPos = std::make_pair(vxI,npv);
900 trackParticleVertexMap.insert( std::make_pair( trk, myVxPos ) );
902 sumpt += trk->
p4().Perp();
906 << primaryVertex->
position().x() <<
","
907 << primaryVertex->
position().y() <<
","
908 << primaryVertex->
position().z() <<
")"
911 <<
" sumpt=" << sumpt);
916 <<
". Truncated event. " );
928 ATH_MSG_DEBUG(
"Vertex " << npv <<
" has no tracks associated to it!" );
939 if (npv == 0)
return false;
949 trackParticleVertexMap.find(
eg->trackParticle());
950 if (tpVx == trackParticleVertexMap.end() ){
951 return std::make_pair( primaryVertexFirstCandidate,-1 );
953 return (*tpVx).second;
1001 if(!
track)
return false;
1005 if (oldTrackStates == 0)
1018 trkPara = (*rItTSoS)->trackParameters();
1040 if(
m_nbpv<1)
return false;
1041 bool primaryVertexOk(
false);
1045 if (
m_pvnbtk[
i] > 2) primaryVertexOk =
true;
1047 if(!primaryVertexOk)
return false;
1053 std::vector<int> goodLooseElectrons;
1060 if (clusterEt <= 25000)
continue;
1072 goodLooseElectrons.push_back(ele);
1075 int pairsLooseInMassWindow = 0;
1077 ATH_MSG_DEBUG(
"N Loose electrons " << goodLooseElectrons.size());
1080 for(
int gele1 = 0; gele1 < (
int)goodLooseElectrons.size()-1; ++gele1){
1081 for(
int gele2 = gele1+1; gele2 < (
int)goodLooseElectrons.size(); ++gele2){
1082 int ele1 = goodLooseElectrons[gele1];
1083 int ele2 = goodLooseElectrons[gele2];
1085 if (
mass > 60000 &&
mass < 120000){
1086 ++pairsLooseInMassWindow;
1095 if (pairsLooseInMassWindow < 1)
return false;
1096 std::vector<int> goodMediumElectrons;
1098 for(
int gele = 0; gele < (
int)goodLooseElectrons.size(); ++gele){
1099 int ele = goodLooseElectrons[gele];
1101 goodMediumElectrons.push_back(ele);
1106 if (goodMediumElectrons.size() != 2)
return false;
1110 if (
mass > 66000 &&
mass < 116000){
1113 electrons.push_back(goodMediumElectrons[0]);
1114 electrons.push_back(goodMediumElectrons[1]);
1133 if(
m_nbpv<1)
return false;
1134 bool primaryVertexOk(
false);
1138 if (
m_pvnbtk[
i] > 2) primaryVertexOk =
true;
1140 if(!primaryVertexOk)
return false;
1150 std::vector<int> goodLooseElectrons;
1156 if (clusterEt <= 25000)
continue;
1164 goodLooseElectrons.push_back(ele);
1168 for(
int gele(0); gele < (
int) goodLooseElectrons.size(); ++gele){
1169 int ele = goodLooseElectrons[gele];
1174 int nMediumElectrons(0);
1175 int nTightElectrons(0);
1176 int tightElectron(0);
1178 for(
int gele(0); gele < (
int) goodLooseElectrons.size(); ++gele){
1180 int ele = goodLooseElectrons[gele];
1184 tightElectron = ele;
1188 if (nMediumElectrons >2)
1191 if (nTightElectrons <1)
1199 if(massT > 0) massT =std::sqrt(massT);
1209 if (massT <= 50000)
return false;
1216 double wpt = sumpx*sumpx +sumpy*sumpy - massT*massT;
1217 if(wpt > 0) wpt =std::sqrt(wpt);
1237 double ELECTRON_MASS = 0.5109989;
1238 TLorentzVector
v0,v1;
1245 double mass = (
v0+v1).M();
1253 std::vector<int> electronsZee;
1254 std::vector<int> electronsWenu;
1257 std::vector<int> allInterestingElectrons;
1258 for(
int i(0);
i < (
int)electronsZee.size(); ++
i){
1259 int ele = electronsZee[
i];
1260 if (
std::find(allInterestingElectrons.begin(), allInterestingElectrons.end(), ele)==allInterestingElectrons.end() ){
1261 allInterestingElectrons.push_back(ele);
1264 for(
int i(0);
i < (
int)electronsWenu.size(); ++
i){
1265 int ele = electronsWenu[
i];
1266 if (
std::find(allInterestingElectrons.begin(), allInterestingElectrons.end(), ele)==allInterestingElectrons.end() ){
1267 allInterestingElectrons.push_back(ele);
1270 ATH_MSG_DEBUG(
" SimpleTreeElectrons " << allInterestingElectrons.size() );
1271 for(
int i(0);
i < (
int)allInterestingElectrons.size(); ++
i){
1272 int ele = allInterestingElectrons[
i];
1287 return allInterestingElectrons;
JetConstituentVector::iterator iterator
~IDPerfMonEoverP()
Destructor.
std::string m_smallValidationTreeFolder
Root Validation Tree.
virtual double phi() const
The azimuthal angle ( ) of the particle.
@ e233
uncalibrated energy (sum of cells) of the middle sampling in a rectangle of size 3x3 (in cell units e...
std::string m_jetContainerName
JEt collection input name.
float m_ePID_IsolationType[50][NOS_ELECTRONS]
std::string m_smallValidationTreeName
validation tree description - second argument in TTree
const ShapeFitter * fitter
unsigned int m_lumi_block
Const iterator class for DataVector/DataList.
ToolHandle< IegammaTrkRefitterTool > m_TrackRefitter
The track refitter.
bool fillVertexInformation(std::map< const xAOD::TrackParticle *, VxPos > &trackParticleVertexMap, xAOD::Vertex const *&primaryVertexFirstCandidate)
bool passWenuSelection(std::vector< int > &electrons)
IDPerfMonEoverP(const std::string &name, ISvcLocator *pSvcLocator)
Default constructor.
float m_electronQoverP[3][NOS_ELECTRONS]
Track q over p on electron.
double m_smallClusterEnergy
std::string find(const std::string &s)
return a remapped string
float m_electronErrd0[3][NOS_ELECTRONS]
bool passMETCleaningCuts() const
void addToValidationNtuple(const Trk::Perigee *, const xAOD::CaloCluster *, int isOrginal)
addToValidationNutple
float m_ePID_ShowerType[50][NOS_ELECTRONS]
const_reverse_iterator rend() const noexcept
Return a const_reverse_iterator pointing at the beginning of the collection.
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
const TrackParticleLinks_t & trackParticleLinks() const
Get all the particles associated with the vertex.
bool summaryValue(uint8_t &value, const SummaryType &information) const
Accessor for TrackSummary values.
int m_nSCT[NOS_ELECTRONS]
void clearValidationNtuple()
float m_electronLMQoverP[3][NOS_ELECTRONS]
Track q over p on electron.
uint16_t author(uint16_t bitmask=EgammaParameters::AuthorALL) const
Get author.
ToolHandle< IegammaTrkRefitterTool > m_TrackRefitter_no2
The track refitter.
@ deltaEta2
difference between the cluster eta (second sampling) and the eta of the track extrapolated to the sec...
bool m_isGoodOQ[NOS_ELECTRONS]
bool m_IsEMTight[NOS_ELECTRONS]
setEt setPhi setE277 setWeta2 eta1
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
const xAOD::TrackParticle * trackParticle(size_t index=0) const
Pointer to the xAOD::TrackParticle/s that match the electron candidate.
int m_nPIXout[NOS_ELECTRONS]
@ numberOfTRTHits
number of TRT hits [unit8_t].
const Amg::Vector3D & position() const
Returns the 3-pos.
const uint32_t BADCLUSELECTRON
bool m_validationMode
< boolean to switch to validation mode
#define ATH_MSG_VERBOSE(x)
std::string m_validationTreeDescription
stream/folder to for the TTree to be written out
std::string m_primaryVertexCollection
Primary vertex input name.
def TH2F(name, title, nxbins, bins_par2, bins_par3, bins_par4, bins_par5=None, bins_par6=None, path='', **kwargs)
std::vector< std::string > m_triggerNames
AsgElectronLikelihoodTool * m_LHToolTight2015
@ wtots1
shower width is determined in a window detaxdphi = 0,0625 ×~0,2, corresponding typically to 20 strips...
std::string m_missingEtObjectName
MET input name.
#define AmgSymMatrix(dim)
int m_nTRT[NOS_ELECTRONS]
void deleteAction() const
@ numberOfTRTHighThresholdHits
number of TRT hits which pass the high threshold (only xenon counted) [unit8_t].
float m_ePID_TrackCaloMatchType[50][NOS_ELECTRONS]
std::vector< std::pair< xAOD::Iso::IsolationType, std::string > > m_PID_IsolationType_Names
bool fillLastMeasurement(const Trk::Track *track, const int fitter)
TH1F * m_ZeeMediumMassSS_Cluster
TH2F * m_WenuTightElectron_PTEtaPos
@ f3
fraction of energy reconstructed in 3rd sampling
virtual FourMom_t p4() const override final
The full 4-momentum of the particle.
std::string m_OutputTrackCollectionName_no2
ServiceHandle< StoreGateSvc > & evtStore()
The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc.
int m_nTRTHT[NOS_ELECTRONS]
TrackCollection * m_refittedTracks_no2
std::vector< std::pair< xAOD::EgammaParameters::TrackCaloMatchType, std::string > > m_PID_TrackCaloMatchType_Names
@ numberOfTRTHighThresholdOutliers
number of TRT high threshold outliers (only xenon counted) [unit8_t].
const Trk::Perigee & perigeeParameters() const
Returns the Trk::MeasuredPerigee track parameters.
Description of a calorimeter cluster.
float m_ClusterPhi[NOS_ELECTRONS]
SummaryType
Enumerates the different types of information stored in Summary.
int m_nTRTHTout[NOS_ELECTRONS]
TH1F * m_WenuLooseElectronET
double getMassCluster(int el1, int el2)
float m_electronErrQoverP[3][NOS_ELECTRONS]
void fillGeneral(const xAOD::Electron *eg)
virtual double eta() const
The pseudorapidity ( ) of the particle.
DataVector< Trk::Track > TrackCollection
This typedef represents a collection of Trk::Track objects.
std::string m_metRefFinalName
float m_electronTheta[3][NOS_ELECTRONS]
Track theta on Surface.
bool m_IsEMLoose[NOS_ELECTRONS]
StatusCode initialize()
Gaudi algorithm hooks.
@ etcone20
Calorimeter isolation.
TTree * m_smallValidationTree
SG::ReadHandleKey< xAOD::EventInfo > m_evt
ReadHandle to the Event Info.
::StatusCode StatusCode
StatusCode definition for legacy code.
std::string m_validationTreeName
validation tree description - second argument in TTree
@ emins1
energy reconstructed in the strip with the minimal value between the first and second maximum
const xAOD::CaloCluster * caloCluster(size_t index=0) const
Pointer to the xAOD::CaloCluster/s that define the electron candidate.
Principal data object for Missing ET.
float m_ePID_SummaryType[50][NOS_ELECTRONS]
#define CHECK(...)
Evaluate an expression and check for errors.
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
TH1F * m_WenuTightElectronET
bool storeMETinformation()
int m_associatedToVtx[NOS_ELECTRONS]
ToolHandle< IJetSelector > m_jetCleaningTool
jet selector tool
bool passZeeSelection(std::vector< int > &electrons)
void fillElectronInfo(const xAOD::Electron *p)
const_reverse_iterator rbegin() const noexcept
Return a const_reverse_iterator pointing past the end of the collection.
float m_electronErrz0[3][NOS_ELECTRONS]
AsgElectronLikelihoodTool * m_LHToolMedium2015
std::vector< std::pair< xAOD::EgammaParameters::ShowerShapeType, std::string > > m_PID_ShowerType_Names
const Perigee * perigeeParameters() const
return Perigee.
Ensure that the ATLAS eigen extensions are properly loaded.
Container for xAOD::MissingET_v1 objects.
int m_electronCounter
counter for electrons
TH2F * m_WenuTightElectron_PTEtaNeg
validation tree name - to be acessed by this from root
std::reverse_iterator< const_iterator > const_reverse_iterator
Standard const_reverse_iterator.
@ deltaPhi2
difference between the cluster phi (second sampling) and the phi of the track extrapolated to the sec...
float m_ClusterEta[NOS_ELECTRONS]
bool m_fillDetailedTree
validation tree name - to be acessed by this from root
int m_nSCTout[NOS_ELECTRONS]
bool m_IsEMTightTRT[NOS_ELECTRONS]
int m_nTRTout[NOS_ELECTRONS]
TH1F * m_ZeeLooseMassSS_Cluster
void fillIsEM(const xAOD::Electron *eg)
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
@ numberOfTRTOutliers
number of TRT outliers [unit8_t].
TH1F * m_ZeeMediumMassOS_Cluster
std::string m_validationTreeFolder
Root Validation Tree.
TH2F * m_ZeeMediumOS_ClusterPtEta
Class describing a Vertex.
float m_ClusterEnergy[NOS_ELECTRONS]
@ numberOfSCTOutliers
number of SCT outliers [unit8_t].
#define ATH_MSG_WARNING(x)
int m_author[NOS_ELECTRONS]
TH1F * m_ZeeLooseMassOS_Cluster
bool absEta(const xAOD::TauJet &tau, double &out)
ToolHandle< Trig::TrigDecisionTool > m_trigDec
The trigger decision tool.
void fillTriggerInformation()
int m_nBLayer[NOS_ELECTRONS]
@ numberOfSCTHits
number of hits in SCT [unit8_t].
@ e277
uncalibrated energy (sum of cells) of the middle sampling in a rectangle of size 7x7
float m_electronErrPhi[3][NOS_ELECTRONS]
Track phi error on electron.
@ weta1
shower width using +/-3 strips around the one with the maximal energy deposit: w3 strips = sqrt{sum(E...
std::string m_InputElectronContainerName
Electron collection input name.
def TH1F(name, title, nxbins, bins_par2, bins_par3=None, path='', **kwargs)
float m_electronz0[3][NOS_ELECTRONS]
Track q over p on electron.
Class describing a TrackParticle.
@ e237
uncalibrated energy (sum of cells) of the middle sampling in a rectangle of size 3x7
const Trk::Track * track() const
Returns a pointer (which can be NULL) to the Trk::Track which was used to make this TrackParticle.
std::string m_OutputTrackCollectionName_no1
Name of output of Refitted Inner Detector Tracks.
@ deltaEta1
difference between the cluster eta (first sampling) and the eta of the track extrapolated to the firs...
VxPos findAssociatedVertex(std::map< const xAOD::TrackParticle *, VxPos > &trackParticleVertexMap, const xAOD::Vertex *primaryVertexFirstCandidate, const xAOD::Electron *) const
@ f3core
E3(3x3)/E fraction of the energy reconstructed in the third compartment of the electromagnetic calori...
@ e2tsts1
energy of the cell corresponding to second energy maximum in the first sampling
float m_electronPhi[3][NOS_ELECTRONS]
Track Phi on electron.
bool m_IsEMMedium[NOS_ELECTRONS]
setBGCode setTAP setLVL2ErrorBits bool
std::pair< const xAOD::Vertex *, int > VxPos
size_type size() const noexcept
Returns the number of elements in the collection.
@ emaxs1
energy of strip with maximal energy deposit
virtual double e() const
The total energy of the particle.
int m_nPIX[NOS_ELECTRONS]
std::vector< std::pair< xAOD::SummaryType, std::string > > m_PID_SummaryType_Names
bool empty() const noexcept
Returns true if the collection is empty.
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.
@ fracs1
shower shape in the shower core : [E(+/-3)-E(+/-1)]/E(+/-1), where E(+/-n) is the energy in ± n strip...
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
@ numberOfInnermostPixelLayerHits
these are the hits in the 0th pixel barrel layer
std::vector< int > FillSimpleTree()
AsgElectronLikelihoodTool * m_LHToolLoose2015
const uint16_t AuthorElectron
Object Reconstructed by standard cluster-based algorithm.
@ weta2
the lateral width is calculated with a window of 3x5 cells using the energy weighted sum over all cel...
float m_electrond0[3][NOS_ELECTRONS]
Track Phi on electron.
float m_electronErrTheta[3][NOS_ELECTRONS]
Track theta error on electron.
Type::ObjectType type() const
A little helper function for identifying the type in template code.
TrackCollection * m_refittedTracks_no1
Refitted track collection.
std::string m_smallValidationTreeDescription
stream/folder to for the TTree to be written out