20#include "GaudiKernel/MsgStream.h"
21#include "Gaudi/Property.h"
27#include "GaudiKernel/ITHistSvc.h"
42#include "TLorentzVector.h"
53 ISvcLocator* pSvcLocator):
59 m_trigDec(
"Trig::TrigDecisionTool/TrigDecisionTool"),
156 return StatusCode::FAILURE;
163 return StatusCode::FAILURE;
170 return StatusCode::FAILURE;
185 {xEgamma::emins1,
"f1core"},
186 {xEgamma::fracs1,
"fside"},
187 {xEgamma::e2tsts1,
"Emax2"},
188 {xEgamma::weta1,
"ws3"},
189 {xEgamma::wtots1,
"wstot"},
190 {xEgamma::emaxs1,
"emaxs1"},
191 {xEgamma::e233,
"E233"},
192 {xEgamma::e237,
"E237"},
193 {xEgamma::e277,
"E277"},
194 {xEgamma::weta2,
"weta2"},
196 {xEgamma::f3core,
"f3core"}
200 {xIso::etcone20,
"Etcone20"},
201 {xIso::etcone30,
"Etcone30"},
202 {xIso::etcone40,
"Etcone40"},
203 {xIso::ptcone30,
"ptcone30"}
207 {xEgamma::deltaEta1,
"deltaeta1"},
208 {xEgamma::deltaEta2,
"deltaeta2"},
209 {xEgamma::deltaPhi2,
"deltaphi2"}
238 "HLT_e24_lhmedium_idperf_L1EM20VH",
239 "HLT_e24_medium_L1EM18VH",
251 std::string FitterNames[3] = {
"GX2",
"Refitted1",
"Refitted2"};
258 for(
int fitter(0); fitter < 3; ++fitter){
260 m_validationTree->Branch( (FitterNames[fitter]+
"_Eta").c_str() ,
m_electronEta[fitter], (FitterNames[fitter]+
"_Eta[nElectrons]/F").c_str() );
261 m_validationTree->Branch( (FitterNames[fitter]+
"_Eta").c_str() ,
m_electronEta[fitter], (FitterNames[fitter]+
"_Eta[nElectrons]/F").c_str() );
262 m_validationTree->Branch( (FitterNames[fitter]+
"_Phi0").c_str() ,
m_electronPhi[fitter], (FitterNames[fitter]+
"_Phi0[nElectrons]/F").c_str() );
264 m_validationTree->Branch( (FitterNames[fitter]+
"_d0").c_str() ,
m_electrond0[fitter], (FitterNames[fitter]+
"_d0[nElectrons]/F").c_str());
265 m_validationTree->Branch( (FitterNames[fitter]+
"_z0").c_str() ,
m_electronz0[fitter], (FitterNames[fitter]+
"_z0[nElectrons]/F").c_str());
358 if ( tHistSvc.retrieve().isSuccess()) {
359 ATH_MSG_DEBUG(
" initialize() THistSvc successfully retrieved ");
362 ATH_MSG_ERROR(
"initialize() Could not find Hist Service -> Switching ValidationMode Off !");
374 ATH_MSG_ERROR(
"initialize() Could not register the validation Tree -> Switching ValidationMode Off !");
380 ATH_MSG_DEBUG(
"initialize() no validation tree to register :( ");
384 ATH_MSG_ERROR(
"initialize() Could not register the validation Tree -> Switching ValidationMode Off !");
394 m_WenuTight_Met =
new TH1F(
"WenuTight_Met",
"WenuTight_Met", 120, 00000 ,120000);
395 m_WenuTight_MT =
new TH1F(
"WenuTight_MT",
"WenuTight_MT", 120, 00000 ,120000);
396 m_WenuTightMet_MT =
new TH1F(
"WenuTightMet_MT",
"WenuTightMet_MT", 120, 00000 ,120000);
398 m_WenuTightW_PT =
new TH1F(
"WenuTightW_PT",
"WenuTightW_PT", 100, 00000 ,100000);
404 bool somethingFailed{};
418 if (somethingFailed)
ATH_MSG_ERROR(
"initialize() Could not register histogram ");
427 ATH_MSG_INFO(
"IDPerfMonEoverP::Initialize() -- Setting up electron LH tool.");
440 std::string confDir =
"ElectronPhotonSelectorTools/offline/"+
m_lhTune+
"/";
441 std::string configFileL = confDir+
"ElectronLikelihoodLooseOfflineConfig2015.conf";
442 std::string configFileM = confDir+
"ElectronLikelihoodMediumOfflineConfig2015.conf";
443 std::string configFileT = confDir+
"ElectronLikelihoodTightOfflineConfig2015.conf";
446 ATH_MSG_WARNING(
"Failure loading ConfigFile in loose electron likelihood tool.");
448 ATH_MSG_WARNING(
"Failure loading ConfigFile in medium electron likelihood tool.");
450 ATH_MSG_WARNING(
"Failure loading ConfigFile in tight electron likelihood tool.");
454 ATH_MSG_WARNING(
"Loose electron likelihood tool initialize() failed!");
457 ATH_MSG_WARNING(
"Medium electron likelihood tool initialize() failed!");
460 ATH_MSG_WARNING(
"Tight electron likelihood tool initialize() failed!");
462 return StatusCode::SUCCESS;
469 return StatusCode::SUCCESS;
477 StatusCode
sc(StatusCode::SUCCESS);
478 std::map<const xAOD::TrackParticle*, VxPos > trackParticleVertexMap;
479 const xAOD::Vertex* primaryVertexFirstCandidate =
nullptr;
483 ATH_MSG_WARNING(
" Validation Mode has been turned off ALG will do not fill Ntuples" );
520 if (
sc != StatusCode::SUCCESS){
523 return StatusCode::SUCCESS;
526 if (ElectronInput_container->
empty() ){
527 ATH_MSG_DEBUG(
"-- ElectronInput_container is empty -> return");
529 return StatusCode::SUCCESS;
537 electron_iterator iter = ElectronInput_container->
begin();
538 electron_iterator iterEnd = ElectronInput_container->
end();
542 for(; iter != iterEnd ; ++iter) {
561 if( mytp !=
nullptr ){
576 ATH_MSG_DEBUG(
"Electron with no track particle?? Possibly Forward");
582 primaryVertexFirstCandidate,
609 if (
sc == StatusCode::SUCCESS){
627 if (
sc == StatusCode::SUCCESS){
655 for(
const auto & thisGoodElectron: goodElectrons){
658 (*ElectronInput_container)[thisGoodElectron]->trackParticle()->track(),
660 if (
sc == StatusCode::SUCCESS){
674 delete selectedElectrons;
675 return (StatusCode::FAILURE);
682 delete selectedElectrons;
683 return (StatusCode::FAILURE);
690 delete selectedElectrons;
691 return (StatusCode::FAILURE);
694 return StatusCode::SUCCESS;
700 if (isOriginal >= 0 && isOriginal <3){
718 ATH_MSG_DEBUG(
"No MeasuredPerigee - cannot add data to ntuple" );
772 for (
int j = 0 ; j <3 ; ++j){
800 for (
int j = 0 ; j < 50 ; ++j){
812 for (
int i(0); i<
NO_PV; ++i){
872 if (
sc.isFailure()) {
890 if(
sc.isFailure() || !jetTDS ) {
894 if (jetTDS->
empty())
return true;
895 bool cleanJet =
true;
896 for(
const auto* jet_elem : *jetTDS ) {
911 if (
sc.isFailure()) {
919 <<
" = " << vxContainer->
size() );
920 primaryVertexFirstCandidate = std::begin(*vxContainer)[0];
921 ATH_MSG_DEBUG(
"The primary vertex type: " << primaryVertexFirstCandidate->
type() );
923 for(
const auto* vxI : *vxContainer ) {
924 int type = (int)(vxI)->vertexType();
929 const std::vector< ElementLink< xAOD::TrackParticleContainer > > tpLinks = vxI->trackParticleLinks();
931 if(not tpLinks.empty()) {
932 nbtk = tpLinks.size();
933 ATH_MSG_DEBUG(
" -- vertex " << vtxCount <<
" has " << nbtk <<
" track particles" );
934 for(
const auto& tp_elem : tpLinks ){
937 VxPos myVxPos = std::make_pair(vxI,npv);
938 trackParticleVertexMap.insert( std::make_pair( trk, myVxPos ) );
940 sumpt += trk->
p4().Perp();
948 << primaryVertex->
position().x() <<
","
949 << primaryVertex->
position().y() <<
","
950 << primaryVertex->
position().z() <<
")"
953 <<
" sumpt=" << sumpt);
958 <<
". Truncated event. " );
970 ATH_MSG_DEBUG(
"Vertex " << npv <<
" has no tracks associated to it!" );
979 ATH_MSG_DEBUG(
"Done filling Vertex information -- completed -- ");
981 if (npv == 0)
return false;
990 std::map<const xAOD::TrackParticle*, VxPos>::iterator tpVx =
992 if (tpVx == trackParticleVertexMap.end() ){
993 return std::make_pair( primaryVertexFirstCandidate,-1 );
995 return (*tpVx).second;
1043 if(!track)
return false;
1047 if (oldTrackStates == 0)
1060 trkPara = (*rItTSoS)->trackParameters();
1080 ATH_MSG_DEBUG (
" -- passZeeSelection() -- failing on primary vertices: m_nbpv= " <<
m_nbpv);
1084 bool primaryVertexOk(
false);
1087 for (
int i=0; i<
m_nbpv; ++i){
1088 if (
m_pvnbtk[i] > 2) primaryVertexOk =
true;
1090 if(!primaryVertexOk) {
1091 ATH_MSG_DEBUG (
" -- passZeeSelection() -- failing on primary vertices");
1098 std::vector<int> goodLooseElectrons;
1105 if (clusterEt <= 25000)
continue;
1109 if (absEta >= 2.47 || ( absEta >= 1.37 && absEta <= 1.52 ))
continue;
1117 goodLooseElectrons.push_back(ele);
1120 int pairsLooseInMassWindow = 0;
1122 ATH_MSG_DEBUG(
" -- passZeeSelection() -- report -- N Loose electrons " << goodLooseElectrons.size());
1125 for(
int gele1 = 0; gele1 < (int)goodLooseElectrons.size()-1; ++gele1){
1126 for(
int gele2 = gele1+1; gele2 < (int)goodLooseElectrons.size(); ++gele2){
1127 int ele1 = goodLooseElectrons[gele1];
1128 int ele2 = goodLooseElectrons[gele2];
1130 if (mass > 60000 && mass < 120000){
1131 ++pairsLooseInMassWindow;
1140 if (pairsLooseInMassWindow < 1) {
1141 ATH_MSG_DEBUG (
" -- passZeeSelection() -- failing pairsLooseInMassWindow= " << pairsLooseInMassWindow );
1144 std::vector<int> goodMediumElectrons;
1146 for(
int gele = 0; gele < (int)goodLooseElectrons.size(); ++gele){
1147 int ele = goodLooseElectrons[gele];
1149 goodMediumElectrons.push_back(ele);
1154 if (goodMediumElectrons.size() != 2) {
1155 ATH_MSG_DEBUG (
" -- passZeeSelection() -- failing goodMediumElectrons != 2 --> " << goodMediumElectrons.size());
1160 double mass =
getMassCluster(goodMediumElectrons[0],goodMediumElectrons[1]);
1161 if (mass > 66000 && mass < 116000){
1164 electrons.push_back(goodMediumElectrons[0]);
1165 electrons.push_back(goodMediumElectrons[1]);
1185 if(
m_nbpv<1)
return false;
1186 bool primaryVertexOk(
false);
1189 for (
int i(0); i<
m_nbpv; ++i){
1190 if (
m_pvnbtk[i] > 2) primaryVertexOk =
true;
1192 if(!primaryVertexOk) {
1193 ATH_MSG_DEBUG (
" -- passWenuSelection() -- failing on primary vertices");
1199 ATH_MSG_DEBUG (
" -- passWenuSelection() -- failing on m_isDATA && !m_METgoodness");
1208 std::vector<int> goodLooseElectrons;
1214 if (clusterEt <= 25000)
continue;
1217 if (absEta >= 2.47 || ( absEta >= 1.37 && absEta <= 1.52 ) )
continue;
1222 goodLooseElectrons.push_back(ele);
1226 for(
int gele(0); gele < (int) goodLooseElectrons.size(); ++gele){
1227 int ele = goodLooseElectrons[gele];
1232 int nMediumElectrons(0);
1233 int nTightElectrons(0);
1234 int tightElectron(0);
1236 for(
int gele(0); gele < (int) goodLooseElectrons.size(); ++gele){
1238 int ele = goodLooseElectrons[gele];
1242 tightElectron = ele;
1246 if (nMediumElectrons >2) {
1247 ATH_MSG_DEBUG (
" -- passWenuSelection() -- failing number of medium electrons cut " << nMediumElectrons );
1251 if (nTightElectrons <1) {
1252 ATH_MSG_DEBUG (
" -- passWenuSelection() -- failing number of tight electrons cut " << nTightElectrons );
1260 if(massT > 0) massT =std::sqrt(massT);
1273 if (massT <= 50000) {
1274 ATH_MSG_DEBUG (
" -- passWenuSelection() -- failing transverse mass cut " << massT );
1283 double wpt = sumpx*sumpx +sumpy*sumpy - massT*massT;
1284 if(wpt > 0) wpt =std::sqrt(wpt);
1296 electrons.push_back(tightElectron);
1306 TLorentzVector v0,v1;
1311 v0.SetPtEtaPhiM(pt1,eta1,
m_electronPhi[0][el1], ELECTRON_MASS);
1312 v1.SetPtEtaPhiM(pt2,eta2,
m_electronPhi[0][el2], ELECTRON_MASS);
1313 double mass = (v0+v1).M();
1321 std::vector<int> electronsZee;
1322 std::vector<int> electronsWenu;
1328 std::vector<int> allInterestingElectrons;
1329 for(
int i(0); i < (int)electronsZee.size(); ++i){
1330 int ele = electronsZee[i];
1331 if ( std::find(allInterestingElectrons.begin(), allInterestingElectrons.end(), ele)==allInterestingElectrons.end() ){
1332 allInterestingElectrons.push_back(ele);
1335 for(
int i(0); i < (int)electronsWenu.size(); ++i){
1336 int ele = electronsWenu[i];
1337 if ( std::find(allInterestingElectrons.begin(), allInterestingElectrons.end(), ele)==allInterestingElectrons.end() ){
1338 allInterestingElectrons.push_back(ele);
1341 ATH_MSG_DEBUG(
" SimpleTreeElectrons " << allInterestingElectrons.size() );
1342 for(
int i(0); i < (int)allInterestingElectrons.size(); ++i){
1343 int ele = allInterestingElectrons[i];
1358 return allInterestingElectrons;
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_DEBUG(x,...)
#define ATH_MSG_ERROR(x,...)
#define ATH_MSG_WARNING(x,...)
#define ATH_MSG_VERBOSE(x,...)
#define ATH_MSG_INFO(x,...)
#define ATH_MSG_FATAL(x,...)
#define CHECK(...)
Evaluate an expression and check for errors.
#define AmgSymMatrix(dim)
std::pair< const xAOD::Vertex *, int > VxPos
DataVector< Trk::Track > TrackCollection
This typedef represents a collection of Trk::Track objects.
AthAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
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]
StatusCode execute(const EventContext &ctx)
Execute method.
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.
bool isGoodOQ(uint32_t mask) const
Check object quality. Return True is it is Good Object Quality.
bool passSelection(bool &value, const std::string &menu) const
Check if the egamma object pass a selection menu (using the name) If the menu decision is stored in t...
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 IIntersectionCache * cache() const
Retrieve the associated cache block, if it exists.
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".