128 StatusCode
sc(StatusCode::SUCCESS);
135 int voidcutpos =
m_acceptInfo.addCut(
"VOID1",
"No Cut");
136 if (voidcutpos < 0)
sc = StatusCode::FAILURE;
139 if (voidcutpos < 0)
sc = StatusCode::FAILURE;
142 if (voidcutpos < 0)
sc = StatusCode::FAILURE;
145 if (voidcutpos < 0)
sc = StatusCode::FAILURE;
148 if (voidcutpos < 0)
sc = StatusCode::FAILURE;
151 if (voidcutpos < 0)
sc = StatusCode::FAILURE;
159 if (voidcutpos < 0)
sc = StatusCode::FAILURE;
162 if (voidcutpos < 0)
sc = StatusCode::FAILURE;
195 if (voidcutpos < 0)
sc = StatusCode::FAILURE;
200 "difference between 2nd maximum and 1st minimum in strips < Cut");
221 "difference between max and 2nd max in strips > Cut");
232 "Passes tighter ambiguity resolution vs electron");
236 if (voidcutpos < 0)
sc = StatusCode::FAILURE;
239 if (voidcutpos < 0)
sc = StatusCode::FAILURE;
242 if (voidcutpos < 0)
sc = StatusCode::FAILURE;
245 if (voidcutpos < 0)
sc = StatusCode::FAILURE;
248 if (voidcutpos < 0)
sc = StatusCode::FAILURE;
265 if (
sc == StatusCode::FAILURE) {
266 ATH_MSG_ERROR(
"Exceeded the number of allowed cuts in TPhotonIsEMSelector");
274 for (
int i = 0; i < 32; i++) {
275 const unsigned int mask = (0x1u << i) &
m_isEMMask;
392 unsigned int iflag = 0;
561 const int ibin_combined
572 }
else if (eta2 >= 0.8 && eta2 < 1.37) {
632 int ibinEtaStrips = -1;
642 ibinEtaStrips = ibin;
649 if (ibinEtaStrips < 0) {
654 int ibinMuStrips = 0;
656 for (
unsigned int ibmu=1;
672 const int ibin_combinedStrips
816 const int ibin_combined
835 }
else if (eta2 >= 0.8 && eta2 < 1.37) {
895 int ibinEtaStrips = -1;
905 ibinEtaStrips = ibin;
910 int ibinMuStrips = 0;
912 for (
unsigned int ibmu=1;
928 if (ibinEtaStrips == -1) {
934 const int ibin_combinedStrips
1030 unsigned int combinedStripsNB_photonsConv = etaStripsNB_photonsConv;
1031 unsigned int combinedStripsNB_photonsNonConv = etaStripsNB_photonsNonConv;
1032 unsigned int combinedNB_photonsNonConv = etaNB_photonsNonConv;
1033 unsigned int combinedNB_photonsConv = etaNB_photonsConv;
1036 if (etStripsNB_photonsNonConv > 0)
1037 combinedStripsNB_photonsNonConv = etaStripsNB_photonsNonConv * (etStripsNB_photonsNonConv + 1);
1039 if (etNB_photonsConv > 0)
1040 combinedNB_photonsConv = etaNB_photonsConv * (etNB_photonsConv + 1);
1042 if (etStripsNB_photonsConv > 0)
1043 combinedStripsNB_photonsConv = etaStripsNB_photonsConv * (etStripsNB_photonsConv + 1);
1045 if (etNB_photonsNonConv > 0)
1046 combinedNB_photonsNonConv = etaNB_photonsNonConv * (etNB_photonsNonConv + 1);
1049 if (muStripsNB_photonsNonConv > 0)
1050 combinedStripsNB_photonsNonConv *= (muStripsNB_photonsNonConv + 1);
1052 if (muNB_photonsConv > 0)
1053 combinedNB_photonsConv *= (muNB_photonsConv + 1);
1055 if (muStripsNB_photonsConv > 0)
1056 combinedStripsNB_photonsConv *= (muStripsNB_photonsConv + 1);
1058 if (muNB_photonsNonConv > 0)
1059 combinedNB_photonsNonConv *= (muNB_photonsNonConv + 1);
1062 if (
vec.empty())
return false;
1065 if (
vec.size() != 1) {
1067 <<
vec.size() <<
" but needs 1");
1075 if (
vec.size() != etaNB_photonsConv) {
1077 <<
vec.size() <<
" but needs etaNB_photonsConv "
1078 << etaNB_photonsConv);
1086 if (
vec.size() != etNB_photonsConv) {
1088 <<
vec.size() <<
" but needs etNB_photonsConv="
1089 << etNB_photonsConv);
1096 if (
vec.size() != combinedNB_photonsConv) {
1098 <<
vec.size() <<
" but needs combinedNB_photonsConv="
1099 << combinedNB_photonsConv);
1106 if (
vec.size() != etaStripsNB_photonsConv) {
1108 <<
vec.size() <<
" but needs etaStripsNB_photonsConv="
1109 << etaStripsNB_photonsConv);
1116 if (
vec.size() != etStripsNB_photonsConv) {
1118 <<
vec.size() <<
" but needs etStripsNB_photonsConv="
1119 << etStripsNB_photonsConv);
1126 if (
vec.size() != combinedStripsNB_photonsConv) {
1128 <<
vec.size() <<
" but needs combinedStripsNB_photonsConv="
1129 << combinedStripsNB_photonsConv);
1136 if (
vec.size() != etaNB_photonsNonConv) {
1138 <<
vec.size() <<
" but needs etaNB_photonsNonConv "
1139 << etaNB_photonsNonConv);
1146 if (
vec.size() != etNB_photonsNonConv) {
1148 <<
vec.size() <<
" but needs etNB_photonsNonConv="
1149 << etNB_photonsNonConv);
1156 if (
vec.size() != combinedNB_photonsNonConv) {
1158 <<
vec.size() <<
" but needs combinedNB_photonsNonConv="
1159 << combinedNB_photonsNonConv);
1166 if (
vec.size() != etaStripsNB_photonsNonConv) {
1168 <<
vec.size() <<
" but needs etaStripsNB_photonsNonConv="
1169 << etaStripsNB_photonsNonConv);
1176 if (
vec.size() != etStripsNB_photonsNonConv) {
1178 <<
vec.size() <<
" but needs etStripsNB_photonsNonConv="
1179 << etStripsNB_photonsNonConv);
1186 if (
vec.size() != combinedStripsNB_photonsNonConv) {
1188 <<
vec.size() <<
" but needs combinedStripsNB_photonsNonConv="
1189 << combinedStripsNB_photonsNonConv);
#define ATH_MSG_WARNING(x)
std::vector< size_t > vec
std::vector< float > m_cutBinEnergy_photonsNonConverted
range of ET bins for photon-ID
std::vector< float > m_cutHadLeakage_photonsConverted
Cut on hadronic leakage for photons.
int m_cutPositionTrackIsolation_Photon
tracker isolation for photon selection
const std::string m_cutNameClusterIsolation_Photon
calorimetric isolation for photon selection
std::vector< float > m_e277_photonsConverted
Cut in E277 for photons.
asg::AcceptData fillAccept(unsigned int isEM) const
std::vector< float > m_DEmaxs1_photonsConverted
cut on (Emax1-Emax2)/(Emax1-Emax2) for photons
int m_cutPositionClusterBackEnergyFraction_Photon
energy fraction in the third layer
const std::string m_cutNameClusterStripsDeltaE_Photon
energy of 2nd maximum in 1st sampling ~e2tsts1/(1000+const_lumi*et)
std::vector< float > m_w1_photonsNonConverted
Cut on width in 3 strips for photons.
bool m_forceNonConvertedPhotonPID
boolean to force to test non converted photon hypothesis
std::vector< float > m_deltae_photonsNonConverted
Cut on Demax2 for photons.
const std::string m_cutNameClusterMiddleEratio33_Photon
energy ratio in 2nd sampling for photons
bool m_forceConvertedPhotonPID
boolean to force to test converted photon hypothesis
int m_cutPositionClusterStripsFracm_Photon
shower shape in shower core 1st sampling
std::vector< float > m_cutBinEta_photonsNonConverted
range of eta bins for photon-ID
int m_cutPositionClusterHadronicLeakage_Photon
cluster leakage into the hadronic calorimeter
std::vector< float > m_cutBinEtaStrips_photonsNonConverted
binning in eta in strips for photons
std::vector< float > m_cutminEp_photonsConverted
cut min on E/p for e-ID
int m_cutPositionClusterStripsEratio_Photon
fraction of energy found in 1st sampling
std::vector< float > m_f1_photonsNonConverted
Cut on fraction of energy rec.
StatusCode initialize()
Initialize this class.
int m_cutPositionClusterIsolation_Photon
calorimetric isolation for photon selection
std::vector< float > m_cutHadLeakage_photonsNonConverted
Cut on hadronic leakage for photons.
unsigned int m_isEMMask
which subset of cuts to apply
~TPhotonIsEMSelector()
Standard destructor.
asg::AcceptInfo m_acceptInfo
Accept info.
int m_cutPositionClusterEtaRange_Photon
cluster eta range
TPhotonIsEMSelector(const char *name="TPhotonIsEMSelector")
Standard constructor.
std::vector< float > m_Reta37_photonsConverted
ratio E237/E277
std::vector< float > m_Reta37_photonsNonConverted
ratio E237/E277
std::vector< float > m_fracm_photonsConverted
Cut on fraction of energy outside core for photons.
std::vector< float > m_cutBinEnergy_photonsConverted
range of ET bins for photon-ID
std::vector< float > m_f1_photonsConverted
Cut on fraction of energy rec.
std::vector< float > m_cutBinEnergyStrips_photonsNonConverted
std::vector< float > m_wtot_photonsNonConverted
Cut on total width in strips for photons.
std::vector< float > m_wtot_photonsConverted
Cut on total width in strips for photons.
int m_cutPositionClusterStripsWeta1c_Photon
shower width weighted by distance from the maximum one
std::vector< float > m_cutBinMuStrips_photonsNonConverted
binning in pielup in strips for photons
int m_cutPositionAmbiguityResolution_Photon
ambiguity resolution for photon (vs electron)
int m_cutPositionIsolation_Photon
isolation
const std::string m_cutNameClusterEtaRange_Photon
cluster eta range
std::vector< float > m_DEmaxs1_photonsNonConverted
cut on (Emax1-Emax2)/(Emax1-Emax2) for photons
std::vector< float > m_cutBinMu_photonsNonConverted
range of mu bins for photon-ID
std::vector< float > m_w1_photonsConverted
Cut on width in 3 strips for photons.
std::vector< float > m_fracm_photonsNonConverted
Cut on fraction of energy outside core for photons.
const std::string m_cutNameClusterStripsWtot_Photon
shower width in 1st sampling
int m_cutPositionClusterMiddleEnergy_Photon
energy in 2nd sampling (e277)
int m_cutPositionClusterStripsDeltaE_Photon
energy of 2nd maximum in 1st sampling ~e2tsts1/(1000+const_lumi*et)
std::vector< float > m_cutBinMu_photonsConverted
range of mu bins for photon-ID
std::vector< float > m_deltae_photonsConverted
Cut on Demax2 for photons.
std::vector< float > m_Rphi33_photonsNonConverted
ratio E233/E237
const std::string m_cutNameClusterMiddleWidth_Photon
width in the second sampling
const std::string m_cutNameClusterStripsDEmaxs1_Photon
difference between max and 2nd max in strips
std::vector< float > m_cutBinEta_photonsConverted
range of eta bins for photon-ID
std::vector< float > m_cutBinMuStrips_photonsConverted
binning in pileup in strips for photons
std::vector< float > m_weta2_photonsNonConverted
Cut on width in 2nd sampling for photons.
std::vector< float > m_cutF3_photonsNonConverted
cut values for cut on f3 or f3core
int m_cutPositionClusterMiddleWidth_Photon
width in the second sampling
std::vector< float > m_cutmaxEp_photonsConverted
cut max on E/p for e-ID
const std::string m_cutNameClusterMiddleEnergy_Photon
energy in 2nd sampling (e277)
std::vector< float > m_cutBinEnergyStrips_photonsConverted
std::vector< float > m_weta2_photonsConverted
Cut on width in 2nd sampling for photons.
asg::AcceptData accept() const
Return dummy accept with only info.
const std::string m_cutNameClusterHadronicLeakage_Photon
cluster leakage into the hadronic calorimeter
int m_cutPositionTrackMatchEoverP_Photon
energy-momentum match for photon selection
int m_cutPositionClusterStripsWtot_Photon
shower width in 1st sampling
const std::string m_cutNameTrackIsolation_Photon
tracker isolation for photon selection
const std::string m_cutNameTrackMatchEoverP_Photon
energy-momentum match for photon selection
int m_cutPositionClusterMiddleEratio37_Photon
energy ratio in 2nd sampling
std::vector< float > m_e277_photonsNonConverted
Cut in E277 for photons.
const std::string m_cutNameClusterMiddleEratio37_Photon
energy ratio in 2nd sampling
int m_cutPositionClusterStripsDEmaxs1_Photon
difference between max and 2nd max in strips
const std::string m_cutNameClusterStripsEratio_Photon
fraction of energy found in 1st sampling
unsigned int calcIsEm(float eta2, double et, float Rhad1, float Rhad, float e277, float Reta, float Rphi, float weta2c, float f1, float Eratio, float DeltaE, float weta1c, float wtot, float fracm, float f3, double ep, bool isConversion, float mu) const
const std::string m_cutNameIsolation_Photon
isolation
unsigned int calocuts_photonsConverted(float eta2, double et, float Rhad1, float Rhad, float e277, float Reta, float Rphi, float weta2c, float f1, float Eratio, float DeltaE, float weta1c, float wtot, float fracm, float f3, double ep, unsigned int iflag, float mu) const
Apply calorimeter cuts for selection of converted photons.
std::vector< float > m_Rphi33_photonsConverted
ratio E233/E237
unsigned int calocuts_photonsNonConverted(float eta2, double et, float Rhad1, float Rhad, float e277, float Reta, float Rphi, float weta2c, float f1, float Eratio, float DeltaE, float weta1c, float wtot, float fracm, float f3, unsigned int iflag, float mu) const
Apply calorimeter cuts for selection of non converted photons.
const std::string m_cutNameClusterStripsFracm_Photon
shower shape in shower core 1st sampling
bool checkVar(const std::vector< T > &vec, int choice) const
Method that check vector size.
int m_cutPositionClusterMiddleEratio33_Photon
energy ratio in 2nd sampling for photons
const std::string m_cutNameClusterBackEnergyFraction_Photon
energy fraction in the third layer
std::vector< float > m_cutBinEtaStrips_photonsConverted
binning in eta in strips for photons
const std::string m_cutNameAmbiguityResolution_Photon
ambiguity resolution for photon (vs electron)
const std::string m_cutNameClusterStripsWeta1c_Photon
shower width weighted by distance from the maximum one
std::vector< float > m_cutF3_photonsConverted
cut values for cut on f3 or f3core
void setCutResult(const std::string &cutName, bool cutResult)
Set the result of a cut, based on the cut name (safer)
AsgMessaging(const std::string &name)
Constructor with a name.
@ ClusterMiddleEratio33_Photon
energy ratio in 2nd sampling for photons
@ ClusterEtaRange_Photon
cluster eta range
@ ClusterHadronicLeakage_Photon
cluster leakage into the hadronic calorimeter
@ ClusterMiddleEnergy_Photon
energy in 2nd sampling (e277)
@ ClusterMiddleWidth_Photon
width in the second sampling
@ ClusterStripsFracm_Photon
shower shape in shower core 1st sampling
@ ClusterStripsWtot_Photon
shower width in 1st sampling
@ ClusterMiddleEratio37_Photon
energy ratio in 2nd sampling
@ ClusterStripsDeltaE_Photon
difference between 2nd maximum and 1st minimum in strips (e2tsts1-emins1)
@ ClusterStripsEratio_Photon
fraction of energy found in 1st sampling
@ ClusterStripsDEmaxs1_Photon
difference between max and 2nd max in strips
@ ClusterStripsWeta1c_Photon
shower width weighted by distance from the maximum one
@ ClusterBackEnergyFraction_Photon
energy fraction in the third layer
@ TrackMatchEoverP_Photon
energy-momentum match for photon selection
Extra patterns decribing particle interation process.