|
ATLAS Offline Software
|
Go to the documentation of this file.
35 AsgElectronIsEMSelector::AsgElectronIsEMSelector(
const std::string& myname)
44 declareProperty(
"WorkingPoint", m_WorkingPoint =
"",
"The Working Point");
47 "The config file to use (if not setting cuts one by one)");
56 declareProperty(
"useF3core", m_useF3core =
false,
"Cut on f3 or f3core?");
61 "Flag to tell the tool if its a calo only cutbase");
88 sc = StatusCode::FAILURE;
99 int mask(
env.GetValue(
"isEMMask", default_mask));
104 bool useTRTOutliers(
env.GetValue(
"useTRTOutliers",
true));
106 bool useTRTXenonHits(
env.GetValue(
" useTRTXenonHits",
false));
162 ATH_MSG_ERROR(
"Could not initialize the TElectronIsEMSelector!");
163 sc = StatusCode::FAILURE;
186 return accept(Gaudi::Hive::currentContext(),
part);
200 "AsgElectronIsEMSelector::could not convert argument to Electron/Photon");
210 unsigned int isEM = ~0;
212 if (
sc.isFailure()) {
219 ATH_MSG_ERROR(
"AsgElectronIsEMSelector::accept was given a bad argument");
275 return "0 No cuts applied";
278 ATH_MSG_INFO(
"Didn't recognize the given operating point with mask: "
287 unsigned int& isEM)
const
300 return StatusCode::SUCCESS;
304 if (cluster ==
nullptr) {
308 return StatusCode::SUCCESS;
311 const float eta2 = fabsf(cluster->
etaBE(2));
313 const double energy = cluster->
e();
325 et = (cosh(
el->trackParticle()->eta()) != 0.)
326 ?
energy / cosh(
el->trackParticle()->eta())
338 return StatusCode::SUCCESS;
347 unsigned int iflag)
const
372 bool allFound =
true;
453 unsigned int iflag)
const
467 ATH_MSG_ERROR(
"Something is bad with the variables as passed");
474 uint8_t nSiHitsPlusDeadSensors =
489 bool allFound =
true;
503 const float trackd0 = fabsf(
t->d0());
509 allFound = allFound &&
eg->trackCaloMatchValue(
511 allFound = allFound &&
eg->trackCaloMatchValue(
515 const double ep =
energy * fabs(
t->qOverP());
528 nSiHitsPlusDeadSensors,
asg::AcceptData accept(float eta2, double et, float Reta, float Rphi, float Rhad1, float Rhad, float e277, float weta1c, float weta2c, float f1, float emax2, float Eratio, float DeltaE, float wtot, float fracm, float f3, bool passBLayerRequirement, int nPixHitsPlusDeadSensors, int nSiHitsPlusDeadSensors, int nTRThigh, int nTRThighOutliers, int nTRT, int nTRTOutliers, int nTRTXenonHits, float TRT_PID, float trackd0, float deltaeta, float deltaphi, double ep) const
The main accept method: the actual cuts are applied here.
std::vector< float > m_cutmaxDeltaPhi
cut max on delta phi for e-ID
std::vector< float > m_cutTRTRatio
cut on Ratio of TR hits to Number of TRT hits for e-ID
Extra patterns decribing particle interation process.
Electron_v1 Electron
Definition of the current "egamma version".
std::vector< int > m_cutSi
cut min on precision hits for e-ID
std::vector< float > m_cutBinET_TRT
Et binning for cuts on TRT for e-ID.
std::size_t numberOfSiliconHitsAndDeadSensors(const xAOD::TrackParticle &tp)
return the number of Silicon hits plus dead sensors in the track particle
std::vector< int > m_cutPi
cut min on pixel hits for e-ID
const unsigned int ElectronMedium1
Medium1 tunes electron selecton.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T > &t)
virtual StatusCode initialize() override
Gaudi Service Interface method implementations.
@ numberOfTRTXenonHits
number of TRT hits on track in straws with xenon [unit8_t].
std::vector< float > m_cutNumTRT
cut on Number of TRT hits for e-ID
@ ClusterEtaRange_Electron
cluster eta range
std::vector< float > m_cutminDeltaPhi
cut min on delta phi for e-ID (this should be negative)
std::vector< float > m_cutWeta1c
cut on width in 1st sampling for e-ID
@ numberOfTRTHits
number of TRT hits [unit8_t].
Class providing the definition of the 4-vector interface.
std::vector< float > m_cutBinEta_TRT
Eta binning for cuts on TRT for e-ID.
bool passBLayerRequirement(const xAOD::TrackParticle &tp)
return true if effective number of BL hits + outliers is at least one
std::vector< float > m_cutBinEta
range of eta bins for e-ID
@ wtots1
shower width is determined in a window detaxdphi = 0,0625 ×~0,2, corresponding typically to 20 strips...
std::vector< float > m_cutRphi33
cut on ratio e233/e277 for e-ID
@ numberOfTRTHighThresholdHits
number of TRT hits which pass the high threshold (only xenon counted) [unit8_t].
const unsigned int EgPidUndefined
@ f3
fraction of energy reconstructed in 3rd sampling
float etaBE(const unsigned layer) const
Get the eta in one layer of the EM Calo.
std::vector< float > m_cutReta37
cut on ratio e237/e277 for e-ID
virtual StatusCode execute(const EventContext &ctx, const xAOD::Egamma *eg, unsigned int &isEM) const override final
Add a legacy execute method - return isEM value.
std::string m_WorkingPoint
Working Point.
@ numberOfTRTHighThresholdOutliers
number of TRT high threshold outliers (only xenon counted) [unit8_t].
Description of a calorimeter cluster.
const unsigned int ElectronTightHLT
Tight 2014 tunes electron selecton.
bool m_useF3core
use f3core or f3 (default: use f3)
bool m_useTRTOutliers
use of TRT outliers
const unsigned int ElectronTightPP
Tight++ electron selecton.
std::vector< float > m_cutEProbabilityHT
cut on on eProbabilityHT new TRT PID tool
@ f1
E1/E = fraction of energy reconstructed in the first sampling, where E1 is energy in all strips belon...
StatusCode initialize()
Initialize this class.
std::vector< float > m_cutDeltaE
cut on Emax2 - Emin in 1st sampling for e-ID
Root::TElectronIsEMSelector * m_rootTool
Pointer to the underlying ROOT based tool.
::StatusCode StatusCode
StatusCode definition for legacy code.
std::vector< float > m_cutF3
cut values for cut on f3
std::vector< float > m_cutDEmaxs1
cut on (Emax1-Emax2)/(Emax1-Emax2) for e-ID
std::vector< float > m_cutDeltaEta
cut max on delta eta for e-ID
MsgStream & msg() const
The standard message stream.
virtual const asg::AcceptInfo & getAcceptInfo() const override final
Method to get the plain AcceptInfo.
std::vector< float > m_cutminEp
cut min on E/p for e-ID
virtual std::string getOperatingPointName() const override final
Method to get the operating point.
const std::map< std::string, std::string > ElectronCutPointToConfFile
std::vector< int > HelperInt(const std::string &input, TEnv &env)
unsigned int calocuts_electrons(float eta2, double et, float Reta, float Rphi, float Rhad1, float Rhad, float e277, float weta1c, float weta2c, float f1, float emax2, float Eratio, float DeltaE, float wtot, float fracm, float f3, unsigned int iflag, double trigEtTh=0) const
virtual ASG_TOOL_CLASS3(AsgElectronIsEMSelector, IAsgElectronIsEMSelector, IAsgEGammaIsEMSelector, IAsgSelectionTool) public ~AsgElectronIsEMSelector()
Standard constructor.
std::vector< float > m_cutDeltaEtaTight
cut max on delta eta for Tight e-ID
bool m_useTRTXenonHits
use of TRT Xenon Hits
std::vector< float > m_cutFracm
cut on Fside in 1st sampling for e-ID
unsigned int TrackCut(float eta2, double et, bool passBLayerRequirement, int nPixHitsPlusDeadSensors, int nSiHitsPlusDeadSensors, int nTRThigh, int nTRThighOutliers, int nTRT, int nTRTOutliers, int nTRTXenonHits, float TRT_PID, float trackd0, float deltaeta, float deltaphi, double ep, unsigned int iflag) const
const asg::AcceptInfo & getAcceptInfo() const
std::vector< float > m_cutA0Tight
cut min on transverse impact parameter for Tight e-ID
const unsigned int ElectronLooseHLT
Loose 2014 tunes electron selection.
const unsigned int ElectronLoosePP
Loose++ electron selection.
@ deltaPhi2
difference between the cluster phi (second sampling) and the phi of the track extrapolated to the sec...
std::vector< float > m_cutTRTRatio90
cut on Ratio of TR hits to Number of TRT hits for 10% loss due to TRT
std::vector< float > m_cutHadLeakage
cut on hadronic energy for e-ID
virtual asg::AcceptData accept(const xAOD::IParticle *part) const override final
Accept with generic interface.
Photon_v1 Photon
Definition of the current "egamma version".
std::string PathResolverFindCalibFile(const std::string &logical_file_name)
unsigned int m_isEMMask
which subset of cuts to apply
@ numberOfTRTOutliers
number of TRT outliers [unit8_t].
unsigned int TrackCut(const xAOD::Electron *eg, float eta2, double et, double energy, unsigned int iflag) const
std::vector< float > m_cutBinET
range of ET bins for e-ID
std::vector< float > m_cutmaxEp
cut max on E/p for e-ID
std::string m_configFile
Config File.
unsigned int calocuts_electrons(const xAOD::Egamma *eg, float eta2, double et, double trigEtTh, unsigned int iflag) const
#define ATH_MSG_WARNING(x)
@ nPixHitsPlusDeadSensors
const unsigned int ElectronLoose1
Electron trigger PID definitions.
std::vector< float > m_cutDeltaEmax2
cut on Delta Emax2 in 1st sampling for e-ID
const unsigned int ElectronMediumPP
Medium++ electron selecton.
bool m_caloOnly
Flag for calo only cut-base.
@ eProbabilityHT
Electron probability from High Threshold (HT) information [float].
@ e277
uncalibrated energy (sum of cells) of the middle sampling in a rectangle of size 7x7
const unsigned int ElectronMediumHLT
Medium 2014 tunes electron selecton.
const unsigned int ElectronTight1
Tight1 tunes electron selecton.
std::vector< float > m_cutWtot
cut on total width in 1st sampling for e-ID
@ weta1
shower width using +/-3 strips around the one with the maximal energy deposit: w3 strips = sqrt{sum(E...
std::vector< float > m_cutWeta2c
cut on shower width in 2nd sampling for e-ID
@ Eratio
(emaxs1-e2tsts1)/(emaxs1+e2tsts1)
Class describing a TrackParticle.
@ deltaEta1
difference between the cluster eta (first sampling) and the eta of the track extrapolated to the firs...
std::vector< float > HelperFloat(const std::string &input, TEnv &env)
@ f3core
E3(3x3)/E fraction of the energy reconstructed in the third compartment of the electromagnetic calori...
std::vector< int > m_cutBL
cut min on b-layer hits for e-ID
virtual double e() const
The total energy of the particle.
@ fracs1
shower shape in the shower core : [E(+/-3)-E(+/-1)]/E(+/-1), where E(+/-n) is the energy in ± n strip...
std::vector< float > m_cutA0
cut min on transverse impact parameter for e-ID
@ weta2
the lateral width is calculated with a window of 3x5 cells using the energy weighted sum over all cel...
std::string findConfigFile(const std::string &input, const std::map< std::string, std::string > &configmap)
std::size_t numberOfPixelHitsAndDeadSensors(const xAOD::TrackParticle &tp)
return the number of Pixel hits plus dead sensors in the track particle
std::vector< float > m_cutF1
cut on fraction of energy deposited in 1st sampling for e-ID
asg::AcceptData fillAccept(unsigned int isEM) const