82 static constexpr
int kMaxEvtPlane = 29;
88 std::transform(evtPlanes.begin(), evtPlanes.end(), hiEvtPlane.begin(), [
this](
auto const& ePlane) ->
float {
99 double eventPlane2 = -100;
100 double eventPlane3 = -100;
102 constexpr
int nParamVals = 9;
103 auto rhoFlowFitParamsOut = std::make_unique<std::vector<double>>(nParamVals, 1
e-6);
105 rhoFlowFitParamsOut->at(0) = 0;
106 rhoFlowFitParamsOut->at(1) = 0;
107 rhoFlowFitParamsOut->at(2) = 0;
108 rhoFlowFitParamsOut->at(3) = 0;
109 rhoFlowFitParamsOut->at(4) = 0;
111 double eventPlane2Cos = 0;
112 double eventPlane2Sin = 0;
114 double eventPlane3Cos = 0;
115 double eventPlane3Sin = 0;
117 std::vector<bool> pfcuts(pfCands.size(),
false);
119 for (
auto const& pfCandidate : pfCands) {
121 if (pfCandidate.particleId() != 1 ||
std::abs(pfCandidate.eta()) > 1.0 || pfCandidate.pt() < .3 ||
122 pfCandidate.pt() > 3.) {
128 for (
auto const&
jet : *jets) {
140 pfcuts[iCand] =
true;
143 eventPlane2Cos +=
std::cos(2 * pfCandidate.phi());
144 eventPlane2Sin +=
std::sin(2 * pfCandidate.phi());
146 eventPlane3Cos +=
std::cos(3 * pfCandidate.phi());
147 eventPlane3Sin +=
std::sin(3 * pfCandidate.phi());
152 eventPlane2 = std::atan2(eventPlane2Sin, eventPlane2Cos) / 2.;
153 eventPlane3 = std::atan2(eventPlane3Sin, eventPlane3Cos) / 3.;
155 eventPlane2 = hiEvtPlane[
hi::HF2];
156 eventPlane3 = hiEvtPlane[
hi::HF3];
158 int pfcuts_count = 0;
159 if (nFill >= 100 && eventPlane2 > -99) {
160 nPhiBins =
std::max(10, nFill / 30);
163 std::string nameFlat =
"phiTestIEta4_Flat_" + std::to_string(iEvent.
id().
event()) +
"_h";
165 phi_h->SetDirectory(
nullptr);
166 for (
auto const& pfCandidate : pfCands) {
167 if (pfcuts.at(pfcuts_count))
168 phi_h->Fill(pfCandidate.phi());
185 rhoFlowFitParamsOut->at(0) =
flowFit_p_->GetParameter(0);
186 rhoFlowFitParamsOut->at(1) =
flowFit_p_->GetParameter(1);
187 rhoFlowFitParamsOut->at(2) =
flowFit_p_->GetParameter(2);
188 rhoFlowFitParamsOut->at(3) =
flowFit_p_->GetParameter(3);
189 rhoFlowFitParamsOut->at(4) =
flowFit_p_->GetParameter(4);
191 rhoFlowFitParamsOut->at(5) =
flowFit_p_->GetChisquare();
192 rhoFlowFitParamsOut->at(6) =
flowFit_p_->GetNDF();
194 rhoFlowFitParamsOut->at(7) =
lineFit_p_->GetChisquare();
195 rhoFlowFitParamsOut->at(8) =
lineFit_p_->GetNDF();
201 iEvent.
put(
std::move(rhoFlowFitParamsOut),
"rhoFlowFitParams");
EventNumber_t event() const
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
const edm::EDGetTokenT< reco::EvtPlaneCollection > evtPlaneToken_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Sin< T >::type sin(const T &t)
const edm::EDGetTokenT< reco::PFCandidateCollection > pfCandsToken_
Cos< T >::type cos(const T &t)
Abs< T >::type abs(const T &t)
bool get(ProductID const &oid, Handle< PROD > &result) const
const bool doFreePlaneFit_
const edm::EDGetTokenT< reco::JetView > jetToken_
constexpr auto deltaR2(const T1 &t1, const T2 &t2) -> decltype(t1.eta())
const bool doJettyExclusion_
static const int NumEPNames
std::unique_ptr< TF1 > lineFit_p_
std::unique_ptr< TF1 > flowFit_p_