19 double etabound = (*theEtabound.find(
type)).
second;
22 if ( fabs(eta) > etabound) {
31 etnew = 2*(x-taus[0])/(taus[1]+
sqrt(taus[1]*taus[1]-4*taus[0]*taus[2]+4*x*taus[2]));
36 etnew = 2*(x-taus[0])/(taus[1]+
sqrt(taus[1]*taus[1]-4*taus[0]*taus[2]+4*x*taus[2]));
41 etnew = 2*(x-taus[0])/(taus[1]+
sqrt(taus[1]*taus[1]-4*taus[0]*taus[2]+4*x*taus[2]));
46 edm::LogError(
"TauJetCorrector: Error: unknown parametrization type ") <<
type <<
" in TauJetCorrector. No correction applied" << endl;
56 int neta(){
return etavector.size();}
57 double eta(
int ieta){
return etavector[ieta];}
58 int type(
int ieta){
return typevector[ieta];}
59 const vector<double>&
parameters(
int ieta){
return pars[ieta];}
60 bool valid(){
return !etavector.empty();}
66 vector< vector<double> >
pars;
79 while( std::getline(
in, line)){
80 if(line.empty() || line[0]==
'#')
continue;
81 istringstream linestream(line);
84 linestream>>par>>
type;
88 etavector.push_back(par);
89 typevector.push_back(type);
90 pars.push_back(vector<double>());
91 while(linestream>>par)pars.back().push_back(par);
117 if((!pset.
valid()) && (aCalibrationType!=
"no"))
119 edm::LogError(
"TauJetCorrector:Jet Corrections not found ")<<aCalibrationType<<
120 " not found! Cannot apply any correction ... For JetPlusTrack calibration only radii 0.5 and 0.7 are included for JetParton" << endl;
123 if (aCalibrationType==
"no")
return;
125 map<int,vector<double> > pq;
126 map<int,vector<double> > pg;
127 map<int,vector<double> > pqcd;
128 map<int,double > etaboundx;
133 for(
int ieta=0; ieta<pset.
neta();ieta++)
138 if( pset.
type(ieta) == -1 ) {etaboundx[mtype-1] = pset.
eta(ieta);}
143 for(
int ieta=0; ieta<pset.
neta();ieta++)
147 if ( pset.
type(ieta) == -1 )
continue;
151 (*etaboundx.find(0)).second);
156 if( ieta > iq && ieta < iq + ig + 2 )
158 mynum = ieta - iq - 1;
160 (*etaboundx.find(1)).second);
165 if( ieta > iq + ig + 1)
167 mynum = ieta - iq - ig - 2;
170 (*etaboundx.find(2)).second);
184 double eta=fabs(fJet.Eta());
189 std::map<double,ParametrizationTauJet*>::const_iterator ip=
parametrization.upper_bound(eta);
190 etnew=(--ip)->
second->value(et,eta);
194 float mScale = etnew/
et;
200 return correction(fJet.
p4());
T getParameter(std::string const &) const
vector< double > etavector
TauJetCorrector(const edm::ParameterSet &fParameters)
vector< vector< double > > pars
Base class for all types of Jets.
~TauJetCorrector() override
void setParameters(std::string, int)
const vector< double > & parameters(int ieta)
U second(std::pair< T, U > const &p)
parametrization
specify parametrization (see SWGuidePATKinematicResolutions for more details)
JetCalibrationParameterSetTauJet(string tag)
const LorentzVector & p4() const final
four-momentum Lorentz vector
et
define resolution functions of each parameter
double value(double, double) const
std::string fullPath() const
double correction(const LorentzVector &fJet) const override
get correction using Jet information only
reco::Particle::LorentzVector LorentzVector