10 theCuts(par.getParameter<
std::vector<double> > (
"EtaBounds"),
11 par.getParameter<
std::vector<double> > (
"ConeSizes"),
12 par.getParameter<
std::vector<double> > (
"Thresholds")),
13 theCutsRel(par.getParameter<
std::vector<double> > (
"EtaBoundsRel"),
14 par.getParameter<
std::vector<double> > (
"ConeSizesRel"),
15 par.getParameter<
std::vector<double> > (
"ThresholdsRel")),
16 theCutAbsIso(par.getParameter<
bool>(
"CutAbsoluteIso")),
17 theCutRelativeIso(par.getParameter<
bool>(
"CutRelativeIso")),
18 theUseRhoCorrection(par.getParameter<
bool>(
"UseRhoCorrection")),
19 theRhoToken(iC.consumes<double>(par.getParameter<
edm::InputTag>(
"RhoSrc"))),
20 theRhoMax(par.getParameter<double>(
"RhoMax")),
21 theRhoScaleBarrel(par.getParameter<double>(
"RhoScaleBarrel")),
22 theRhoScaleEndcap(par.getParameter<double>(
"RhoScaleEndcap")),
23 theEffAreaSFBarrel(par.getParameter<double>(
"EffAreaSFBarrel")),
24 theEffAreaSFEndcap(par.getParameter<double>(
"EffAreaSFEndcap")),
25 theReturnAbsoluteSum(par.getParameter<
bool>(
"ReturnAbsoluteSum")),
26 theReturnRelativeSum(par.getParameter<
bool>(
"ReturnRelativeSum")),
27 theAndOrCuts(par.getParameter<
bool>(
"AndOrCuts"))
30 <<
"Something has to be cut: set either CutAbsoluteIso or CutRelativeIso to true";
34 double dephlt = -
corr;
35 unsigned int nDeps = deposits.
size();
38 for(
unsigned int iDep = 0; iDep < nDeps; ++iDep ){
39 double lDep = deposits[iDep].dep->depositWithin(dr);
51 bool absDecision =
false;
52 bool relDecision =
false;
55 double effAreaSF = 1.0;
57 static const double pi = 3.14159265358979323846;
68 if (rho < 0.0) rho = 0.0;
82 double conesize = cuts_here.
conesize;
83 double dephlt =
depSum(deposits, conesize, rho*conesize*conesize*pi*effAreaSF);
92 }
else absDecision =
true;
96 double conesize = cuts_here.
conesize;
97 double dephlt =
depSum(deposits, conesize, rho*conesize*conesize*pi*effAreaSF)/tk.
pt();
106 }
else relDecision =
true;
110 answer.
valBool = absDecision && relDecision;
112 answer.
valBool = absDecision || relDecision;
muonisolation::Cuts theCuts
double depSum(const DepositContainer &deposits, double dr, double corr) const
double theEffAreaSFEndcap
bool getByToken(EDGetToken token, Handle< PROD > &result) const
muonisolation::Cuts theCutsRel
double theEffAreaSFBarrel
double eta() const
pseudorapidity of momentum vector
double pt() const
track transverse momentum
T const * product() const
std::vector< DepositAndVetos > DepositContainer
bool theReturnAbsoluteSum
Result result(const DepositContainer &deposits, const edm::Event *=0) const override
Compute and return the isolation variable.
bool theReturnRelativeSum
edm::EDGetTokenT< double > theRhoToken
CutsIsolatorWithCorrection(const edm::ParameterSet &par, edm::ConsumesCollector &&iC)