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):
66 m_trigDec(
"Trig::TrigDecisionTool/TrigDecisionTool"),
162 return StatusCode::FAILURE;
169 return StatusCode::FAILURE;
176 return StatusCode::FAILURE;
190 {xEgamma::emins1,
"f1core"},
191 {xEgamma::fracs1,
"fside"},
192 {xEgamma::e2tsts1,
"Emax2"},
193 {xEgamma::weta1,
"ws3"},
194 {xEgamma::wtots1,
"wstot"},
195 {xEgamma::emaxs1,
"emaxs1"},
196 {xEgamma::e233,
"E233"},
197 {xEgamma::e237,
"E237"},
198 {xEgamma::e277,
"E277"},
199 {xEgamma::weta2,
"weta2"},
201 {xEgamma::f3core,
"f3core"}
205 {xIso::etcone20,
"Etcone20"},
206 {xIso::etcone30,
"Etcone30"},
207 {xIso::etcone40,
"Etcone40"},
208 {xIso::ptcone30,
"ptcone30"}
212 {xEgamma::deltaEta1,
"deltaeta1"},
213 {xEgamma::deltaEta2,
"deltaeta2"},
214 {xEgamma::deltaPhi2,
"deltaphi2"}
243 "HLT_e24_lhmedium_idperf_L1EM20VH",
244 "HLT_e24_medium_L1EM18VH",
256 std::string FitterNames[3] = {
"GX2",
"Refitted1",
"Refitted2"};
263 for(
int fitter(0); fitter < 3; ++fitter){
265 m_validationTree->Branch( (FitterNames[fitter]+
"_Eta").c_str() ,
m_electronEta[fitter], (FitterNames[fitter]+
"_Eta[nElectrons]/F").c_str() );
266 m_validationTree->Branch( (FitterNames[fitter]+
"_Eta").c_str() ,
m_electronEta[fitter], (FitterNames[fitter]+
"_Eta[nElectrons]/F").c_str() );
267 m_validationTree->Branch( (FitterNames[fitter]+
"_Phi0").c_str() ,
m_electronPhi[fitter], (FitterNames[fitter]+
"_Phi0[nElectrons]/F").c_str() );
269 m_validationTree->Branch( (FitterNames[fitter]+
"_d0").c_str() ,
m_electrond0[fitter], (FitterNames[fitter]+
"_d0[nElectrons]/F").c_str());
270 m_validationTree->Branch( (FitterNames[fitter]+
"_z0").c_str() ,
m_electronz0[fitter], (FitterNames[fitter]+
"_z0[nElectrons]/F").c_str());
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 !");
399 m_WenuTight_Met =
new TH1F(
"WenuTight_Met",
"WenuTight_Met", 120, 00000 ,120000);
400 m_WenuTight_MT =
new TH1F(
"WenuTight_MT",
"WenuTight_MT", 120, 00000 ,120000);
401 m_WenuTightMet_MT =
new TH1F(
"WenuTightMet_MT",
"WenuTightMet_MT", 120, 00000 ,120000);
403 m_WenuTightW_PT =
new TH1F(
"WenuTightW_PT",
"WenuTightW_PT", 100, 00000 ,100000);
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;
483 StatusCode
sc(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();
546 for(; iter != iterEnd ; ++iter) {
564 if( mytp !=
nullptr ){
578 ATH_MSG_DEBUG(
"Electron with no track particle?? Possibly Forward");
584 primaryVertexFirstCandidate,
611 if (
sc == StatusCode::SUCCESS){
629 if (
sc == StatusCode::SUCCESS){
652 for(
const auto & thisGoodElectron: goodElectrons){
655 (*ElectronInput_container)[thisGoodElectron]->trackParticle()->track(),
657 if (
sc == StatusCode::SUCCESS){
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){
809 for (
int i(0); i<
NO_PV; ++i){
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;
987 std::map<const xAOD::TrackParticle*, VxPos>::iterator tpVx =
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);
1084 for (
int i=0; i<
m_nbpv; ++i){
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;
1106 if (absEta >= 2.47 || ( absEta >= 1.37 && absEta <= 1.52 ))
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());
1157 double mass =
getMassCluster(goodMediumElectrons[0],goodMediumElectrons[1]);
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);
1186 for (
int i(0); i<
m_nbpv; ++i){
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;
1214 if (absEta >= 2.47 || ( absEta >= 1.37 && absEta <= 1.52 ) )
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);
1293 electrons.push_back(tightElectron);
1303 TLorentzVector v0,v1;
1308 v0.SetPtEtaPhiM(pt1,eta1,
m_electronPhi[0][el1], ELECTRON_MASS);
1309 v1.SetPtEtaPhiM(pt2,eta2,
m_electronPhi[0][el2], ELECTRON_MASS);
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;
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_WARNING(x)
#define CHECK(...)
Evaluate an expression and check for errors.
#define AmgSymMatrix(dim)
std::pair< const xAOD::Vertex *, int > VxPos
A number of constexpr particle constants to avoid hardcoding them directly in various places.
DataVector< Trk::Track > TrackCollection
This typedef represents a collection of Trk::Track objects.
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor with parameters:
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
ServiceHandle< StoreGateSvc > & evtStore()
DataModel_detail::const_iterator< DataVector > const_iterator
const_reverse_iterator rend() const noexcept
Return a const_reverse_iterator pointing at the beginning of the collection.
value_type push_back(value_type pElem)
Add an element to the end of the collection.
const_iterator end() const noexcept
Return a const_iterator pointing past the end of the collection.
const_reverse_iterator rbegin() const noexcept
Return a const_reverse_iterator pointing past the end of the collection.
const_iterator begin() const noexcept
Return a const_iterator pointing at the beginning of the collection.
std::reverse_iterator< const_iterator > const_reverse_iterator
size_type size() const noexcept
Returns the number of elements in the collection.
bool empty() const noexcept
Returns true if the collection is empty.
float m_electronErrd0[3][NOS_ELECTRONS]
SG::ReadHandleKey< xAOD::EventInfo > m_evt
ReadHandle to the Event Info.
void fillGeneral(const xAOD::Electron *eg)
bool storeMETinformation()
std::string m_missingEtObjectName
MET input name.
std::vector< std::pair< xAOD::EgammaParameters::ShowerShapeType, std::string > > m_PID_ShowerType_Names
TH1F * m_ZeeMediumMassOS_Cluster
int m_nTRT[NOS_ELECTRONS]
std::string m_OutputTrackCollectionName_no2
TH1F * m_WenuTightElectronET
int m_nTRTout[NOS_ELECTRONS]
TH2F * m_WenuTightElectron_PTEtaNeg
validation tree name - to be acessed by this from root
AsgElectronLikelihoodTool * m_LHToolLoose2015
int m_nBLayer[NOS_ELECTRONS]
float m_ePID_ShowerType[50][NOS_ELECTRONS]
float m_ClusterPhi[NOS_ELECTRONS]
double getMassCluster(int el1, int el2)
TTree * m_smallValidationTree
std::string m_smallValidationTreeName
validation tree description - second argument in TTree
float m_ePID_SummaryType[50][NOS_ELECTRONS]
std::vector< std::pair< xAOD::SummaryType, std::string > > m_PID_SummaryType_Names
void addToValidationNtuple(const Trk::Perigee *, const xAOD::CaloCluster *, int isOrginal)
addToValidationNutple
TH1F * m_ZeeMediumMassSS_Cluster
void fillIsEM(const xAOD::Electron *eg)
ToolHandle< IegammaTrkRefitterTool > m_TrackRefitter
The track refitter.
std::string m_validationTreeName
validation tree description - second argument in TTree
float m_electronEta[3][NOS_ELECTRONS]
Track Eta at perigee.
bool passMETCleaningCuts() const
float m_electrond0[3][NOS_ELECTRONS]
Track Phi on electron.
VxPos findAssociatedVertex(std::map< const xAOD::TrackParticle *, VxPos > &trackParticleVertexMap, const xAOD::Vertex *primaryVertexFirstCandidate, const xAOD::Electron *) const
ToolHandle< IJetSelector > m_jetCleaningTool
jet selector tool
TH2F * m_WenuTightElectron_PTEtaPos
TH1F * m_ZeeLooseMassSS_Cluster
float m_ePID_TrackCaloMatchType[50][NOS_ELECTRONS]
StatusCode initialize()
Gaudi algorithm hooks.
TrackCollection * m_refittedTracks_no2
float m_electronz0[3][NOS_ELECTRONS]
Track q over p on electron.
int m_nSCT[NOS_ELECTRONS]
~IDPerfMonEoverP()
Destructor.
std::string m_primaryVertexCollection
Primary vertex input name.
std::string m_smallValidationTreeDescription
stream/folder to for the TTree to be written out
int m_nPIX[NOS_ELECTRONS]
float m_ePID_IsolationType[50][NOS_ELECTRONS]
unsigned int m_lumi_block
bool m_IsEMMedium[NOS_ELECTRONS]
TrackCollection * m_refittedTracks_no1
Refitted track collection.
std::string m_InputElectronContainerName
Electron collection input name.
float m_electronErrz0[3][NOS_ELECTRONS]
TH1F * m_WenuLooseElectronET
float m_electronPhi[3][NOS_ELECTRONS]
Track Phi on electron.
std::string m_validationTreeFolder
Root Validation Tree.
std::vector< std::pair< xAOD::Iso::IsolationType, std::string > > m_PID_IsolationType_Names
bool m_validationMode
< boolean to switch to validation mode
int m_author[NOS_ELECTRONS]
int m_associatedToVtx[NOS_ELECTRONS]
void clearValidationNtuple()
int m_nTRTHT[NOS_ELECTRONS]
bool m_IsEMTight[NOS_ELECTRONS]
float m_electronErrPhi[3][NOS_ELECTRONS]
Track phi error on electron.
bool m_isGoodOQ[NOS_ELECTRONS]
bool m_IsEMTightTRT[NOS_ELECTRONS]
float m_ClusterEnergy[NOS_ELECTRONS]
float m_electronErrTheta[3][NOS_ELECTRONS]
Track theta error on electron.
std::string m_OutputTrackCollectionName_no1
Name of output of Refitted Inner Detector Tracks.
int m_electronCounter
counter for electrons
TH2F * m_ZeeMediumOS_ClusterPtEta
std::string m_metRefFinalName
void fillElectronInfo(const xAOD::Electron *p)
int m_nSCTout[NOS_ELECTRONS]
float m_electronLMQoverP[3][NOS_ELECTRONS]
Track q over p on electron.
bool fillLastMeasurement(const Trk::Track *track, const int fitter)
AsgElectronLikelihoodTool * m_LHToolTight2015
IDPerfMonEoverP(const std::string &name, ISvcLocator *pSvcLocator)
Default constructor.
std::vector< int > FillSimpleTree()
TH1F * m_ZeeLooseMassOS_Cluster
void fillTriggerInformation()
ToolHandle< Trig::TrigDecisionTool > m_trigDec
The trigger decision tool.
float m_ClusterEta[NOS_ELECTRONS]
int m_nTRTHTout[NOS_ELECTRONS]
int m_nPIXout[NOS_ELECTRONS]
bool fillVertexInformation(std::map< const xAOD::TrackParticle *, VxPos > &trackParticleVertexMap, xAOD::Vertex const *&primaryVertexFirstCandidate)
float m_electronQoverP[3][NOS_ELECTRONS]
Track q over p on electron.
bool passWenuSelection(std::vector< int > &electrons)
bool passZeeSelection(std::vector< int > &electrons)
bool m_fillDetailedTree
validation tree name - to be acessed by this from root
AsgElectronLikelihoodTool * m_LHToolMedium2015
double m_smallClusterEnergy
float m_electronTheta[3][NOS_ELECTRONS]
Track theta at perigee.
float m_electronErrQoverP[3][NOS_ELECTRONS]
std::string m_jetContainerName
JEt collection input name.
bool m_IsEMLoose[NOS_ELECTRONS]
std::vector< std::string > m_triggerNames
std::string m_validationTreeDescription
stream/folder to for the TTree to be written out
std::string m_smallValidationTreeFolder
Root Validation Tree.
std::vector< std::pair< xAOD::EgammaParameters::TrackCaloMatchType, std::string > > m_PID_TrackCaloMatchType_Names
void deleteAction() const
ToolHandle< IegammaTrkRefitterTool > m_TrackRefitter_no2
The track refitter.
double eta() const
Access method for pseudorapidity - from momentum.
@ Measurement
This is a measurement, and will at least contain a Trk::MeasurementBase.
const Perigee * perigeeParameters() const
return Perigee.
virtual double eta() const
The pseudorapidity ( ) of the particle.
virtual double e() const
The total energy of the particle.
virtual double phi() const
The azimuthal angle ( ) of the particle.
uint16_t author(uint16_t bitmask=EgammaParameters::AuthorALL) const
Get author.
const xAOD::CaloCluster * caloCluster(size_t index=0) const
Pointer to the xAOD::CaloCluster/s that define the electron candidate.
const xAOD::TrackParticle * trackParticle(size_t index=0) const
Pointer to the xAOD::TrackParticle/s that match the electron candidate.
virtual FourMom_t p4() const override final
The full 4-momentum of the particle.
const Trk::Perigee & perigeeParameters() const
Returns the Trk::MeasuredPerigee track parameters.
const Trk::Track * track() const
Returns a pointer (which can be NULL) to the Trk::Track which was used to make this TrackParticle.
bool summaryValue(uint8_t &value, const SummaryType &information) const
Accessor for TrackSummary values.
Type::ObjectType type() const
A little helper function for identifying the type in template code.
const Amg::Vector3D & position() const
Returns the 3-pos.
bool contains(const std::string &s, const std::string ®x)
does a string contain the substring
constexpr double electronMassInMeV
the mass of the electron (in MeV)
Ensure that the ATLAS eigen extensions are properly loaded.
DataVector< const Trk::TrackStateOnSurface > TrackStates
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
ParametersBase< TrackParametersDim, Charged > TrackParameters
const uint32_t BADCLUSELECTRON
const uint16_t AuthorElectron
Object Reconstructed by standard cluster-based algorithm.
Namespace holding the IsolationType enumeration.
ElectronContainer_v1 ElectronContainer
Definition of the current "electron container version".
MissingET_v1 MissingET
Version control by type defintion.
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.
TrackParticle_v1 TrackParticle
Reference the current persistent version:
VertexContainer_v1 VertexContainer
Definition of the current "Vertex container version".
Vertex_v1 Vertex
Define the latest version of the vertex class.
MissingETContainer_v1 MissingETContainer
JetContainer_v1 JetContainer
Definition of the current "jet container version".
SummaryType
Enumerates the different types of information stored in Summary.
@ numberOfTRTHighThresholdOutliers
number of TRT high threshold outliers (only xenon counted) [unit8_t].
@ numberOfTRTHits
number of TRT hits [unit8_t].
@ numberOfSCTHits
number of hits in SCT [unit8_t].
@ numberOfSCTOutliers
number of SCT outliers [unit8_t].
@ numberOfInnermostPixelLayerHits
these are the hits in the 0th pixel barrel layer
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
@ numberOfTRTHighThresholdHits
number of TRT hits which pass the high threshold (only xenon counted) [unit8_t].
@ numberOfTRTOutliers
number of TRT outliers [unit8_t].
Electron_v1 Electron
Definition of the current "egamma version".