23 #include <TObjString.h>
31 typedef std::pair<double, double>
pdouble;
37 LeadPFChargedHadrEoP_barrel_min_ = iConfig.
getParameter<
double>(
"LeadPFChargedHadrEoP_barrel_min");
38 LeadPFChargedHadrEoP_barrel_max_ = iConfig.
getParameter<
double>(
"LeadPFChargedHadrEoP_barrel_max");
39 Hcal3x3OverPLead_barrel_max_ = iConfig.
getParameter<
double>(
"Hcal3x3OverPLead_barrel_max");
40 GammaEtaMom_barrel_max_ = iConfig.
getParameter<
double>(
"GammaEtaMom_barrel_max");
41 GammaPhiMom_barrel_max_ = iConfig.
getParameter<
double>(
"GammaPhiMom_barrel_max");
42 GammaEnFrac_barrel_max_ = iConfig.
getParameter<
double>(
"GammaEnFrac_barrel_max");
43 LeadPFChargedHadrEoP_endcap_min1_ = iConfig.
getParameter<
double>(
"LeadPFChargedHadrEoP_endcap_min1");
44 LeadPFChargedHadrEoP_endcap_max1_ = iConfig.
getParameter<
double>(
"LeadPFChargedHadrEoP_endcap_max1");
45 LeadPFChargedHadrEoP_endcap_min2_ = iConfig.
getParameter<
double>(
"LeadPFChargedHadrEoP_endcap_min2");
46 LeadPFChargedHadrEoP_endcap_max2_ = iConfig.
getParameter<
double>(
"LeadPFChargedHadrEoP_endcap_max2");
47 Hcal3x3OverPLead_endcap_max_ = iConfig.
getParameter<
double>(
"Hcal3x3OverPLead_endcap_max");
48 GammaEtaMom_endcap_max_ = iConfig.
getParameter<
double>(
"GammaEtaMom_endcap_max");
49 GammaPhiMom_endcap_max_ = iConfig.
getParameter<
double>(
"GammaPhiMom_endcap_max");
50 GammaEnFrac_endcap_max_ = iConfig.
getParameter<
double>(
"GammaEnFrac_endcap_max");
51 keepTausInEcalCrack_ = iConfig.
getParameter<
bool>(
"keepTausInEcalCrack");
52 rejectTausInEcalCrack_ = iConfig.
getParameter<
bool>(
"rejectTausInEcalCrack");
54 applyCut_hcal3x3OverPLead_ = iConfig.
getParameter<
bool>(
"applyCut_hcal3x3OverPLead");
55 applyCut_leadPFChargedHadrEoP_ = iConfig.
getParameter<
bool>(
"applyCut_leadPFChargedHadrEoP");
56 applyCut_GammaEtaMom_ = iConfig.
getParameter<
bool>(
"applyCut_GammaEtaMom");
57 applyCut_GammaPhiMom_ = iConfig.
getParameter<
bool>(
"applyCut_GammaPhiMom");
58 applyCut_GammaEnFrac_ = iConfig.
getParameter<
bool>(
"applyCut_GammaEnFrac");
59 applyCut_HLTSpecific_ = iConfig.
getParameter<
bool>(
"applyCut_HLTSpecific");
61 etaCracks_string_ = iConfig.
getParameter<std::vector<std::string>>(
"etaCracks");
70 double discriminate(
const PFTauRef&)
const override;
77 bool isInEcalCrack(
double)
const;
112 cuts2_->SetBarrelCutValues(LeadPFChargedHadrEoP_barrel_min_,
113 LeadPFChargedHadrEoP_barrel_max_,
114 Hcal3x3OverPLead_barrel_max_,
115 GammaEtaMom_barrel_max_,
116 GammaPhiMom_barrel_max_,
117 GammaEnFrac_barrel_max_);
119 cuts2_->SetEndcapCutValues(LeadPFChargedHadrEoP_endcap_min1_,
120 LeadPFChargedHadrEoP_endcap_max1_,
121 LeadPFChargedHadrEoP_endcap_min2_,
122 LeadPFChargedHadrEoP_endcap_max2_,
123 Hcal3x3OverPLead_endcap_max_,
124 GammaEtaMom_endcap_max_,
125 GammaPhiMom_endcap_max_,
126 GammaEnFrac_endcap_max_);
128 cuts2_->ApplyCut_EcalCrack(keepTausInEcalCrack_, rejectTausInEcalCrack_);
130 cuts2_->ApplyCuts(applyCut_hcal3x3OverPLead_,
131 applyCut_leadPFChargedHadrEoP_,
132 applyCut_GammaEtaMom_,
133 applyCut_GammaPhiMom_,
134 applyCut_GammaEnFrac_,
135 applyCut_HLTSpecific_);
138 TPRegexp regexpParser_range(
"([0-9.e+/-]+):([0-9.e+/-]+)");
139 for (std::vector<std::string>::const_iterator etaCrack = etaCracks_string_.begin();
140 etaCrack != etaCracks_string_.end();
142 TObjArray* subStrings = regexpParser_range.MatchS(etaCrack->data());
143 if (subStrings->GetEntries() == 3) {
145 double range_begin = ((TObjString*)subStrings->At(1))->GetString().Atof();
147 double range_end = ((TObjString*)subStrings->At(2))->GetString().Atof();
148 etaCracks_.push_back(
pdouble(range_begin, range_end));
152 cuts2_->SetEcalCracks(etaCracks_);
160 if ((*thePFTauRef).leadChargedHadrCand().isNull()) {
163 discriminator = cuts2_->Discriminator(*thePFTauRef);
167 std::cout <<
" Taus : " << TauProducer_ << std::endl;
168 std::cout <<
"<PFRecoTauDiscriminationAgainstElectron2::discriminate>:" << std::endl;
169 std::cout <<
" tau: Pt = " << thePFTauRef->pt() <<
", eta = " << thePFTauRef->eta()
170 <<
", phi = " << thePFTauRef->phi() << std::endl;
171 std::cout <<
" discriminator value = " << discriminator << std::endl;
172 std::cout <<
" Prongs in tau: " << thePFTauRef->signalChargedHadrCands().size() << std::endl;
180 return (eta < 0.018 || (eta > 0.423 && eta < 0.461) || (eta > 0.770 && eta < 0.806) || (eta > 1.127 && eta < 1.163) ||
181 (eta > 1.460 && eta < 1.558));
187 desc.
add<
bool>(
"rejectTausInEcalCrack",
false);
189 desc.
add<
bool>(
"applyCut_GammaEnFrac",
true);
190 desc.
add<
bool>(
"applyCut_HLTSpecific",
true);
191 desc.
add<
double>(
"GammaEnFrac_barrel_max", 0.15);
192 desc.
add<
bool>(
"keepTausInEcalCrack",
true);
198 psd1.
add<
double>(
"cut");
204 desc.
add<
bool>(
"applyCut_GammaPhiMom",
false);
205 desc.
add<
double>(
"GammaPhiMom_endcap_max", 1.5);
206 desc.
add<
double>(
"GammaPhiMom_barrel_max", 1.5);
207 desc.
add<
bool>(
"applyCut_leadPFChargedHadrEoP",
true);
208 desc.
add<
double>(
"LeadPFChargedHadrEoP_barrel_max", 1.01);
209 desc.
add<
double>(
"GammaEtaMom_endcap_max", 1.5);
210 desc.
add<
double>(
"GammaEtaMom_barrel_max", 1.5);
211 desc.
add<
double>(
"Hcal3x3OverPLead_endcap_max", 0.1);
212 desc.
add<
double>(
"LeadPFChargedHadrEoP_barrel_min", 0.99);
213 desc.
add<
double>(
"LeadPFChargedHadrEoP_endcap_max2", 1.01);
214 desc.
add<
double>(
"LeadPFChargedHadrEoP_endcap_min1", 0.7);
215 desc.
add<
double>(
"LeadPFChargedHadrEoP_endcap_min2", 0.99);
216 desc.
add<
double>(
"LeadPFChargedHadrEoP_endcap_max1", 1.3);
217 desc.
add<
int>(
"verbosity", 0);
218 desc.
add<
double>(
"GammaEnFrac_endcap_max", 0.2);
219 desc.
add<
bool>(
"applyCut_hcal3x3OverPLead",
true);
220 desc.
add<
bool>(
"applyCut_GammaEtaMom",
false);
221 desc.
add<std::vector<std::string>>(
"etaCracks",
229 desc.
add<
double>(
"Hcal3x3OverPLead_barrel_max", 0.2);
230 descriptions.
add(
"pfRecoTauDiscriminationAgainstElectron2", desc);
double GammaEnFrac_endcap_max_
std::pair< double, double > pdouble
ParameterDescriptionBase * addOptional(U const &iLabel, T const &value)
double LeadPFChargedHadrEoP_endcap_max1_
double LeadPFChargedHadrEoP_endcap_min2_
double GammaPhiMom_endcap_max_
double discriminate(const PFTauRef &) const override
#define DEFINE_FWK_MODULE(type)
double GammaEnFrac_barrel_max_
double GammaEtaMom_endcap_max_
AntiElectronIDCut2 * cuts2_
bool keepTausInEcalCrack_
double LeadPFChargedHadrEoP_barrel_min_
bool isInEcalCrack(double) const
bool applyCut_leadPFChargedHadrEoP_
double GammaPhiMom_barrel_max_
bool applyCut_GammaEnFrac_
bool applyCut_HLTSpecific_
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
void beginEvent(const edm::Event &, const edm::EventSetup &) override
ParameterDescriptionBase * add(U const &iLabel, T const &value)
double Hcal3x3OverPLead_barrel_max_
double LeadPFChargedHadrEoP_endcap_max2_
double Hcal3x3OverPLead_endcap_max_
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
bool applyCut_GammaEtaMom_
T getParameter(std::string const &) const
~PFRecoTauDiscriminationAgainstElectron2() override
void add(std::string const &label, ParameterSetDescription const &psetDescription)
bool rejectTausInEcalCrack_
double LeadPFChargedHadrEoP_endcap_min1_
double GammaEtaMom_barrel_max_
std::vector< std::string > etaCracks_string_
std::vector< pdouble > etaCracks_
bool applyCut_hcal3x3OverPLead_
double LeadPFChargedHadrEoP_barrel_max_
bool applyCut_GammaPhiMom_
PFRecoTauDiscriminationAgainstElectron2(const edm::ParameterSet &iConfig)