30 typedef std::pair<double, double>
pdouble;
38 LeadPFChargedHadrEoP_barrel_min_ = iConfig.
getParameter<
double>(
"LeadPFChargedHadrEoP_barrel_min");
39 LeadPFChargedHadrEoP_barrel_max_ = iConfig.
getParameter<
double>(
"LeadPFChargedHadrEoP_barrel_max");
40 Hcal3x3OverPLead_barrel_max_ = iConfig.
getParameter<
double>(
"Hcal3x3OverPLead_barrel_max");
41 GammaEtaMom_barrel_max_ = iConfig.
getParameter<
double>(
"GammaEtaMom_barrel_max");
42 GammaPhiMom_barrel_max_ = iConfig.
getParameter<
double>(
"GammaPhiMom_barrel_max");
43 GammaEnFrac_barrel_max_ = iConfig.
getParameter<
double>(
"GammaEnFrac_barrel_max");
44 LeadPFChargedHadrEoP_endcap_min1_ = iConfig.
getParameter<
double>(
"LeadPFChargedHadrEoP_endcap_min1");
45 LeadPFChargedHadrEoP_endcap_max1_ = iConfig.
getParameter<
double>(
"LeadPFChargedHadrEoP_endcap_max1");
46 LeadPFChargedHadrEoP_endcap_min2_ = iConfig.
getParameter<
double>(
"LeadPFChargedHadrEoP_endcap_min2");
47 LeadPFChargedHadrEoP_endcap_max2_ = iConfig.
getParameter<
double>(
"LeadPFChargedHadrEoP_endcap_max2");
48 Hcal3x3OverPLead_endcap_max_ = iConfig.
getParameter<
double>(
"Hcal3x3OverPLead_endcap_max");
49 GammaEtaMom_endcap_max_ = iConfig.
getParameter<
double>(
"GammaEtaMom_endcap_max");
50 GammaPhiMom_endcap_max_ = iConfig.
getParameter<
double>(
"GammaPhiMom_endcap_max");
51 GammaEnFrac_endcap_max_ = iConfig.
getParameter<
double>(
"GammaEnFrac_endcap_max");
52 keepTausInEcalCrack_ = iConfig.
getParameter<
bool>(
"keepTausInEcalCrack");
53 rejectTausInEcalCrack_ = iConfig.
getParameter<
bool>(
"rejectTausInEcalCrack");
55 applyCut_hcal3x3OverPLead_ = iConfig.
getParameter<
bool>(
"applyCut_hcal3x3OverPLead");
56 applyCut_leadPFChargedHadrEoP_ = iConfig.
getParameter<
bool>(
"applyCut_leadPFChargedHadrEoP");
57 applyCut_GammaEtaMom_ = iConfig.
getParameter<
bool>(
"applyCut_GammaEtaMom");
58 applyCut_GammaPhiMom_ = iConfig.
getParameter<
bool>(
"applyCut_GammaPhiMom");
59 applyCut_GammaEnFrac_ = iConfig.
getParameter<
bool>(
"applyCut_GammaEnFrac");
60 applyCut_HLTSpecific_ = iConfig.
getParameter<
bool>(
"applyCut_HLTSpecific");
62 etaCracks_string_ = iConfig.
getParameter<std::vector<std::string>>(
"etaCracks");
71 double discriminate(
const PFTauRef&)
const override;
78 bool isInEcalCrack(
double)
const;
114 cuts2_->SetBarrelCutValues(LeadPFChargedHadrEoP_barrel_min_,
115 LeadPFChargedHadrEoP_barrel_max_,
116 Hcal3x3OverPLead_barrel_max_,
117 GammaEtaMom_barrel_max_,
118 GammaPhiMom_barrel_max_,
119 GammaEnFrac_barrel_max_
122 cuts2_->SetEndcapCutValues(LeadPFChargedHadrEoP_endcap_min1_,
123 LeadPFChargedHadrEoP_endcap_max1_,
124 LeadPFChargedHadrEoP_endcap_min2_,
125 LeadPFChargedHadrEoP_endcap_max2_,
126 Hcal3x3OverPLead_endcap_max_,
127 GammaEtaMom_endcap_max_,
128 GammaPhiMom_endcap_max_,
129 GammaEnFrac_endcap_max_
132 cuts2_->ApplyCut_EcalCrack(keepTausInEcalCrack_, rejectTausInEcalCrack_);
134 cuts2_->ApplyCuts(applyCut_hcal3x3OverPLead_,
135 applyCut_leadPFChargedHadrEoP_,
136 applyCut_GammaEtaMom_,
137 applyCut_GammaPhiMom_,
138 applyCut_GammaEnFrac_,
139 applyCut_HLTSpecific_
143 TPRegexp regexpParser_range(
"([0-9.e+/-]+):([0-9.e+/-]+)");
144 for ( std::vector<std::string>::const_iterator etaCrack = etaCracks_string_.begin();
145 etaCrack != etaCracks_string_.end(); ++etaCrack ) {
146 TObjArray* subStrings = regexpParser_range.MatchS(etaCrack->data());
147 if ( subStrings->GetEntries() == 3 ) {
149 double range_begin = ((TObjString*)subStrings->At(1))->GetString().Atof();
151 double range_end = ((TObjString*)subStrings->At(2))->GetString().Atof();
152 etaCracks_.push_back(
pdouble(range_begin, range_end));
156 cuts2_->SetEcalCracks(etaCracks_);
166 if( (*thePFTauRef).leadChargedHadrCand().isNull() )
172 discriminator = cuts2_->Discriminator(*thePFTauRef);
177 std::cout<<
" Taus : "<<TauProducer_<<std::endl;
178 std::cout <<
"<PFRecoTauDiscriminationAgainstElectron2::discriminate>:" << std::endl;
179 std::cout <<
" tau: Pt = " << thePFTauRef->pt() <<
", eta = " << thePFTauRef->eta() <<
", phi = " << thePFTauRef->phi() << std::endl;
180 std::cout <<
" discriminator value = " << discriminator << std::endl;
181 std::cout <<
" Prongs in tau: " << thePFTauRef->signalChargedHadrCands().size() << std::endl;
191 return (eta < 0.018 ||
192 (eta>0.423 && eta<0.461) ||
193 (eta>0.770 && eta<0.806) ||
194 (eta>1.127 && eta<1.163) ||
195 (eta>1.460 && eta<1.558));
202 desc.
add<
bool>(
"rejectTausInEcalCrack",
false);
204 desc.
add<
bool>(
"applyCut_GammaEnFrac",
true);
205 desc.
add<
bool>(
"applyCut_HLTSpecific",
true);
206 desc.
add<
double>(
"GammaEnFrac_barrel_max", 0.15);
207 desc.
add<
bool>(
"keepTausInEcalCrack",
true);
213 psd1.
add<
double>(
"cut");
219 desc.
add<
bool>(
"applyCut_GammaPhiMom",
false);
220 desc.
add<
double>(
"GammaPhiMom_endcap_max", 1.5);
221 desc.
add<
double>(
"GammaPhiMom_barrel_max", 1.5);
222 desc.
add<
bool>(
"applyCut_leadPFChargedHadrEoP",
true);
223 desc.
add<
double>(
"LeadPFChargedHadrEoP_barrel_max", 1.01);
224 desc.
add<
double>(
"GammaEtaMom_endcap_max", 1.5);
225 desc.
add<
double>(
"GammaEtaMom_barrel_max", 1.5);
226 desc.
add<
double>(
"Hcal3x3OverPLead_endcap_max", 0.1);
227 desc.
add<
double>(
"LeadPFChargedHadrEoP_barrel_min", 0.99);
228 desc.
add<
double>(
"LeadPFChargedHadrEoP_endcap_max2", 1.01);
229 desc.
add<
double>(
"LeadPFChargedHadrEoP_endcap_min1", 0.7);
230 desc.
add<
double>(
"LeadPFChargedHadrEoP_endcap_min2", 0.99);
231 desc.
add<
double>(
"LeadPFChargedHadrEoP_endcap_max1", 1.3);
232 desc.
add<
int>(
"verbosity", 0);
233 desc.
add<
double>(
"GammaEnFrac_endcap_max", 0.2);
234 desc.
add<
bool>(
"applyCut_hcal3x3OverPLead",
true);
235 desc.
add<
bool>(
"applyCut_GammaEtaMom",
false);
236 desc.
add<std::vector<std::string>>(
"etaCracks", {
243 desc.
add<
double>(
"Hcal3x3OverPLead_barrel_max", 0.2);
244 descriptions.
add(
"pfRecoTauDiscriminationAgainstElectron2", desc);
double GammaEnFrac_endcap_max_
T getParameter(std::string const &) const
ParameterDescriptionBase * addOptional(U const &iLabel, T const &value)
double LeadPFChargedHadrEoP_endcap_max1_
double LeadPFChargedHadrEoP_endcap_min2_
double GammaPhiMom_endcap_max_
double GammaEnFrac_barrel_max_
double GammaEtaMom_endcap_max_
AntiElectronIDCut2 * cuts2_
bool keepTausInEcalCrack_
double LeadPFChargedHadrEoP_barrel_min_
bool isInEcalCrack(double) const
#define DEFINE_FWK_MODULE(type)
bool applyCut_leadPFChargedHadrEoP_
double GammaPhiMom_barrel_max_
double discriminate(const PFTauRef &) const override
bool applyCut_GammaEnFrac_
bool applyCut_HLTSpecific_
std::pair< double, double > pdouble
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_
~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)