 |
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"
60 ISvcLocator* pSvcLocator):
62 m_refittedTracks_no1{},
63 m_refittedTracks_no2{},
65 m_TrackRefitter_no2(
""),
66 m_trigDec(
"Trig::TrigDecisionTool/TrigDecisionTool"),
67 m_refitEverything(
true),
69 m_validationMode(
true),
70 m_fillDetailedTree(
false),
71 m_validationTreeName(
"EGrefitter" ),
72 m_validationTreeDescription(
"egamma track refitter caches" ),
73 m_validationTreeFolder(
"/ZmumuValidationUserSel/EGrefitter"),
86 m_ZeeLooseMassOS_Cluster(
nullptr),
87 m_ZeeLooseMassSS_Cluster(
nullptr),
88 m_ZeeMediumMassOS_Cluster(
nullptr),
89 m_ZeeMediumMassSS_Cluster(
nullptr),
90 m_ZeeMediumOS_ClusterPtEta(
nullptr),
91 m_WenuLooseElectronET(
nullptr),
92 m_WenuTight_Met(
nullptr),
93 m_WenuTight_MT(
nullptr),
94 m_WenuTightMet_MT(
nullptr),
95 m_WenuTightElectronET(
nullptr),
96 m_WenuTightW_PT(
nullptr),
97 m_WenuTightElectron_PTEtaPos(
nullptr),
98 m_WenuTightElectron_PTEtaNeg(
nullptr),
99 m_smallValidationTreeName(
"EGrefitterSmall"),
100 m_smallValidationTreeDescription(
"Small Tree for E/p fits"),
101 m_smallValidationTreeFolder(
"/eoverpValidation2/efitterValidation2"),
102 m_smallValidationTree(
nullptr),
106 m_smallClusterEnergy{},
114 m_LHToolMedium2015{},
120 declareProperty(
"RefitTracks", m_refitEverything);
121 declareProperty(
"isDATA", m_isDATA);
122 declareProperty(
"ReFitterTool", m_TrackRefitter,
"ToolHandle for track fitter implementation");
123 declareProperty(
"ReFitterTool2", m_TrackRefitter_no2,
"ToolHandle for track fitter implementation");
124 declareProperty(
"TrigDecisionTool", m_trigDec,
"The TrigDecisionTool instance.");
125 declareProperty(
"InputElectronContainerName", m_InputElectronContainerName =
"Electrons");
126 declareProperty(
"InputJetContainerName", m_jetContainerName =
"AntiKt4LCTopoJets");
128 declareProperty(
"METFinalName", m_metRefFinalName=
"FinalClus");
129 declareProperty(
"MissingEtObjectName", m_missingEtObjectName =
"MET_Reference_AntiKt4LCTopo");
130 declareProperty(
"primaryVertexCollection", m_primaryVertexCollection =
"PrimaryVertices");
131 declareProperty(
"RefittedElectronTrackContainer1", m_OutputTrackCollectionName_no1=
"GSFTracks");
132 declareProperty(
"RefittedElectronTrackContainer2", m_OutputTrackCollectionName_no2=
"DNATracks");
133 declareProperty(
"ValidationMode", m_validationMode);
134 declareProperty(
"FillDetailedTree", m_fillDetailedTree);
135 declareProperty(
"ElectronLikelihoodTune", m_lhTune=
"mc15_20150712");
136 declareProperty(
"ValidationTreeFolder", m_validationTreeFolder,
"/ZmumuValidationUserSel/EGrefitter");
162 return StatusCode::FAILURE;
169 return StatusCode::FAILURE;
176 return StatusCode::FAILURE;
243 "HLT_e24_lhmedium_idperf_L1EM20VH",
244 "HLT_e24_medium_L1EM18VH",
256 std::string FitterNames[3] = {
"GX2",
"Refitted1",
"Refitted2"};
363 if ( tHistSvc.retrieve().isSuccess()) {
364 ATH_MSG_DEBUG(
" initialize() THistSvc successfully retrieved ");
367 ATH_MSG_ERROR(
"initialize() Could not find Hist Service -> Switching ValidationMode Off !");
379 ATH_MSG_ERROR(
"initialize() Could not register the validation Tree -> Switching ValidationMode Off !");
385 ATH_MSG_DEBUG(
"initialize() no validation tree to register :( ");
389 ATH_MSG_ERROR(
"initialize() Could not register the validation Tree -> Switching ValidationMode Off !");
409 bool somethingFailed{};
423 if (somethingFailed)
ATH_MSG_ERROR(
"initialize() Could not register histogram ");
432 ATH_MSG_INFO(
"IDPerfMonEoverP::Initialize() -- Setting up electron LH tool.");
445 std::string confDir =
"ElectronPhotonSelectorTools/offline/"+
m_lhTune+
"/";
446 std::string configFileL = confDir+
"ElectronLikelihoodLooseOfflineConfig2015.conf";
447 std::string configFileM = confDir+
"ElectronLikelihoodMediumOfflineConfig2015.conf";
448 std::string configFileT = confDir+
"ElectronLikelihoodTightOfflineConfig2015.conf";
451 ATH_MSG_WARNING(
"Failure loading ConfigFile in loose electron likelihood tool.");
453 ATH_MSG_WARNING(
"Failure loading ConfigFile in medium electron likelihood tool.");
455 ATH_MSG_WARNING(
"Failure loading ConfigFile in tight electron likelihood tool.");
459 ATH_MSG_WARNING(
"Loose electron likelihood tool initialize() failed!");
462 ATH_MSG_WARNING(
"Medium electron likelihood tool initialize() failed!");
465 ATH_MSG_WARNING(
"Tight electron likelihood tool initialize() failed!");
467 return StatusCode::SUCCESS;
475 return StatusCode::SUCCESS;
484 std::map<const xAOD::TrackParticle*, VxPos > trackParticleVertexMap;
485 const xAOD::Vertex* primaryVertexFirstCandidate =
nullptr;
489 ATH_MSG_WARNING(
" Validation Mode has been turned off ALG will do not fill Ntuples" );
524 if (
sc != StatusCode::SUCCESS){
527 return StatusCode::SUCCESS;
530 if (ElectronInput_container->
empty() ){
531 ATH_MSG_DEBUG(
"-- ElectronInput_container is empty -> return");
533 return StatusCode::SUCCESS;
541 electron_iterator
iter = ElectronInput_container->
begin();
542 electron_iterator iterEnd = ElectronInput_container->
end();
564 if( mytp !=
nullptr ){
578 ATH_MSG_DEBUG(
"Electron with no track particle?? Possibly Forward");
584 primaryVertexFirstCandidate,
611 if (
sc == StatusCode::SUCCESS){
612 Trk::Track* trkTrack= cache1.refittedTrack.release();
629 if (
sc == StatusCode::SUCCESS){
630 Trk::Track* trkTrack= cache2.refittedTrack.release();
652 for(
const auto & thisGoodElectron: goodElectrons){
655 (*ElectronInput_container)[thisGoodElectron]->trackParticle()->
track(),
657 if (
sc == StatusCode::SUCCESS){
658 Trk::Track* trkTrack= cache.refittedTrack.release();
659 selectedElectrons->push_back(trkTrack);
671 delete selectedElectrons;
672 return (StatusCode::FAILURE);
679 delete selectedElectrons;
680 return (StatusCode::FAILURE);
687 delete selectedElectrons;
688 return (StatusCode::FAILURE);
691 return StatusCode::SUCCESS;
697 if (isOriginal >= 0 && isOriginal <3){
715 ATH_MSG_DEBUG(
"No MeasuredPerigee - cannot add data to ntuple" );
769 for (
int j = 0 ; j <3 ; ++j){
797 for (
int j = 0 ; j < 50 ; ++j){
869 if (
sc.isFailure()) {
887 if(
sc.isFailure() || !jetTDS ) {
891 if (jetTDS->
empty())
return true;
892 bool cleanJet =
true;
893 for(
const auto* jet_elem : *jetTDS ) {
908 if (
sc.isFailure()) {
916 <<
" = " << vxContainer->
size() );
917 primaryVertexFirstCandidate =
std::begin(*vxContainer)[0];
918 ATH_MSG_DEBUG(
"The primary vertex type: " << primaryVertexFirstCandidate->
type() );
920 for(
const auto* vxI : *vxContainer ) {
921 int type = (
int)(vxI)->vertexType();
926 const std::vector< ElementLink< xAOD::TrackParticleContainer > > tpLinks = vxI->trackParticleLinks();
928 if(not tpLinks.empty()) {
929 nbtk = tpLinks.size();
930 ATH_MSG_DEBUG(
" -- vertex " << vtxCount <<
" has " << nbtk <<
" track particles" );
931 for(
const auto& tp_elem : tpLinks ){
934 VxPos myVxPos = std::make_pair(vxI,npv);
935 trackParticleVertexMap.insert( std::make_pair( trk, myVxPos ) );
937 sumpt += trk->
p4().Perp();
945 << primaryVertex->
position().x() <<
","
946 << primaryVertex->
position().y() <<
","
947 << primaryVertex->
position().z() <<
")"
950 <<
" sumpt=" << sumpt);
955 <<
". Truncated event. " );
967 ATH_MSG_DEBUG(
"Vertex " << npv <<
" has no tracks associated to it!" );
976 ATH_MSG_DEBUG(
"Done filling Vertex information -- completed -- ");
978 if (npv == 0)
return false;
988 trackParticleVertexMap.find(
eg->trackParticle());
989 if (tpVx == trackParticleVertexMap.end() ){
990 return std::make_pair( primaryVertexFirstCandidate,-1 );
992 return (*tpVx).second;
1040 if(!
track)
return false;
1044 if (oldTrackStates == 0)
1057 trkPara = (*rItTSoS)->trackParameters();
1077 ATH_MSG_DEBUG (
" -- passZeeSelection() -- failing on primary vertices: m_nbpv= " <<
m_nbpv);
1081 bool primaryVertexOk(
false);
1085 if (
m_pvnbtk[
i] > 2) primaryVertexOk =
true;
1087 if(!primaryVertexOk) {
1088 ATH_MSG_DEBUG (
" -- passZeeSelection() -- failing on primary vertices");
1095 std::vector<int> goodLooseElectrons;
1102 if (clusterEt <= 25000)
continue;
1114 goodLooseElectrons.push_back(ele);
1117 int pairsLooseInMassWindow = 0;
1119 ATH_MSG_DEBUG(
" -- passZeeSelection() -- report -- N Loose electrons " << goodLooseElectrons.size());
1122 for(
int gele1 = 0; gele1 < (
int)goodLooseElectrons.size()-1; ++gele1){
1123 for(
int gele2 = gele1+1; gele2 < (
int)goodLooseElectrons.size(); ++gele2){
1124 int ele1 = goodLooseElectrons[gele1];
1125 int ele2 = goodLooseElectrons[gele2];
1127 if (
mass > 60000 &&
mass < 120000){
1128 ++pairsLooseInMassWindow;
1137 if (pairsLooseInMassWindow < 1) {
1138 ATH_MSG_DEBUG (
" -- passZeeSelection() -- failing pairsLooseInMassWindow= " << pairsLooseInMassWindow );
1141 std::vector<int> goodMediumElectrons;
1143 for(
int gele = 0; gele < (
int)goodLooseElectrons.size(); ++gele){
1144 int ele = goodLooseElectrons[gele];
1146 goodMediumElectrons.push_back(ele);
1151 if (goodMediumElectrons.size() != 2) {
1152 ATH_MSG_DEBUG (
" -- passZeeSelection() -- failing goodMediumElectrons != 2 --> " << goodMediumElectrons.size());
1158 if (
mass > 66000 &&
mass < 116000){
1161 electrons.push_back(goodMediumElectrons[0]);
1162 electrons.push_back(goodMediumElectrons[1]);
1182 if(
m_nbpv<1)
return false;
1183 bool primaryVertexOk(
false);
1187 if (
m_pvnbtk[
i] > 2) primaryVertexOk =
true;
1189 if(!primaryVertexOk) {
1190 ATH_MSG_DEBUG (
" -- passWenuSelection() -- failing on primary vertices");
1196 ATH_MSG_DEBUG (
" -- passWenuSelection() -- failing on m_isDATA && !m_METgoodness");
1205 std::vector<int> goodLooseElectrons;
1211 if (clusterEt <= 25000)
continue;
1219 goodLooseElectrons.push_back(ele);
1223 for(
int gele(0); gele < (
int) goodLooseElectrons.size(); ++gele){
1224 int ele = goodLooseElectrons[gele];
1229 int nMediumElectrons(0);
1230 int nTightElectrons(0);
1231 int tightElectron(0);
1233 for(
int gele(0); gele < (
int) goodLooseElectrons.size(); ++gele){
1235 int ele = goodLooseElectrons[gele];
1239 tightElectron = ele;
1243 if (nMediumElectrons >2) {
1244 ATH_MSG_DEBUG (
" -- passWenuSelection() -- failing number of medium electrons cut " << nMediumElectrons );
1248 if (nTightElectrons <1) {
1249 ATH_MSG_DEBUG (
" -- passWenuSelection() -- failing number of tight electrons cut " << nTightElectrons );
1257 if(massT > 0) massT =std::sqrt(massT);
1270 if (massT <= 50000) {
1271 ATH_MSG_DEBUG (
" -- passWenuSelection() -- failing transverse mass cut " << massT );
1280 double wpt = sumpx*sumpx +sumpy*sumpy - massT*massT;
1281 if(wpt > 0) wpt =std::sqrt(wpt);
1303 TLorentzVector
v0,v1;
1310 double mass = (
v0+v1).M();
1318 std::vector<int> electronsZee;
1319 std::vector<int> electronsWenu;
1325 std::vector<int> allInterestingElectrons;
1326 for(
int i(0);
i < (
int)electronsZee.size(); ++
i){
1327 int ele = electronsZee[
i];
1328 if (
std::find(allInterestingElectrons.begin(), allInterestingElectrons.end(), ele)==allInterestingElectrons.end() ){
1329 allInterestingElectrons.push_back(ele);
1332 for(
int i(0);
i < (
int)electronsWenu.size(); ++
i){
1333 int ele = electronsWenu[
i];
1334 if (
std::find(allInterestingElectrons.begin(), allInterestingElectrons.end(), ele)==allInterestingElectrons.end() ){
1335 allInterestingElectrons.push_back(ele);
1338 ATH_MSG_DEBUG(
" SimpleTreeElectrons " << allInterestingElectrons.size() );
1339 for(
int i(0);
i < (
int)allInterestingElectrons.size(); ++
i){
1340 int ele = allInterestingElectrons[
i];
1355 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.
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
float m_electronEta[3][NOS_ELECTRONS]
Track Eta at perigee.
@ 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 at perigee.
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]
bool absEta(const xAOD::TauJet &tau, float &out)
TH1F * m_ZeeLooseMassOS_Cluster
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
constexpr double electronMassInMeV
the mass of the electron (in MeV)