|
@@ -3,6 +3,7 @@
|
|
|
#include "mfProcessEvent.h"
|
|
|
#include "mfInputReader.h"
|
|
|
#include "mfRecentering.h"
|
|
|
+#include "mfFlattening.h"
|
|
|
|
|
|
#include <vector>
|
|
|
#include <map>
|
|
@@ -129,31 +130,8 @@ int main(int argc, char **argv)
|
|
|
recentering->ReadRecenteringFile(recenteringFileName);
|
|
|
|
|
|
// Read flattening
|
|
|
- TProfile *tmp;
|
|
|
- std::map<double, double> vCosFlat[NsubEvents][Nflattening];
|
|
|
- std::map<double, double> vSinFlat[NsubEvents][Nflattening];
|
|
|
- TFile *fiFlat = new TFile(flatteningFileName.Data(), "read");
|
|
|
- fiFlat->cd();
|
|
|
- for (int i = 0; i < NsubEvents; i++)
|
|
|
- {
|
|
|
- for (int j = 0; j < Nflattening; j++)
|
|
|
- {
|
|
|
- tmp = (TProfile *)fiFlat->Get(Form("pCosAvg_%i_%i", i, j));
|
|
|
- for (int ibin = 0; ibin < tmp->GetNbinsX(); ibin++)
|
|
|
- {
|
|
|
- vCosFlat[i][j][tmp->GetBinCenter(ibin + 1)] = tmp->GetBinContent(ibin + 1);
|
|
|
- }
|
|
|
- delete tmp;
|
|
|
-
|
|
|
- tmp = (TProfile *)fiFlat->Get(Form("pSinAvg_%i_%i", i, j));
|
|
|
- for (int ibin = 0; ibin < tmp->GetNbinsX(); ibin++)
|
|
|
- {
|
|
|
- vSinFlat[i][j][tmp->GetBinCenter(ibin + 1)] = tmp->GetBinContent(ibin + 1);
|
|
|
- }
|
|
|
- delete tmp;
|
|
|
- }
|
|
|
- }
|
|
|
- fiFlat->Close();
|
|
|
+ mfFlattening *flattening = new mfFlattening();
|
|
|
+ flattening->ReadFlatteningFile(flatteningFileName);
|
|
|
|
|
|
// Init output profiles
|
|
|
TH2F *hQxVsCent[3][NsubEvents];
|
|
@@ -231,7 +209,8 @@ int main(int argc, char **argv)
|
|
|
mfEventInfo evInfoTpcRaw = procEvent->ProcessRecoTpcEP(recoTracks, 2.);
|
|
|
if (evInfoTpcRaw.GetQvectors().size() == 0)
|
|
|
continue;
|
|
|
- mfEventInfo evInfoTpc = recentering->ProcessRecentering(evInfoTpcRaw, cent);
|
|
|
+ mfEventInfo evInfoTpcRec = recentering->ProcessRecentering(evInfoTpcRaw, cent);
|
|
|
+ mfEventInfo evInfoTpcFlat = flattening->ProcessFlattening(evInfoTpcRec, cent);
|
|
|
|
|
|
std::vector<double> qx[3], qy[3], psi[3];
|
|
|
std::vector<mfQvector> qv[3];
|
|
@@ -241,46 +220,37 @@ int main(int argc, char **argv)
|
|
|
|
|
|
qx[0].push_back(evInfoTpcRaw.GetQvector(iSub).X());
|
|
|
qy[0].push_back(evInfoTpcRaw.GetQvector(iSub).Y());
|
|
|
- qx[1].push_back(evInfoTpc.GetQvector(iSub).X());
|
|
|
- qy[1].push_back(evInfoTpc.GetQvector(iSub).Y());
|
|
|
- qx[2].push_back(0.);
|
|
|
- qy[2].push_back(0.);
|
|
|
- qv[0].push_back(mfQvector(evInfoTpc.GetQvector(iSub).GetHarmonic(), qx[0].at(iSub), qy[0].at(iSub)));
|
|
|
- qv[1].push_back(mfQvector(evInfoTpc.GetQvector(iSub).GetHarmonic(), qx[1].at(iSub), qy[1].at(iSub)));
|
|
|
- qv[2].push_back(mfQvector(evInfoTpc.GetQvector(iSub).GetHarmonic(), qx[2].at(iSub), qy[2].at(iSub)));
|
|
|
+ qx[1].push_back(evInfoTpcRec.GetQvector(iSub).X());
|
|
|
+ qy[1].push_back(evInfoTpcRec.GetQvector(iSub).Y());
|
|
|
+ qx[2].push_back(evInfoTpcFlat.GetQvector(iSub).X());
|
|
|
+ qy[2].push_back(evInfoTpcFlat.GetQvector(iSub).Y());
|
|
|
+ qv[0].push_back(mfQvector(evInfoTpcRaw.GetQvector(iSub).GetHarmonic(), qx[0].at(iSub), qy[0].at(iSub)));
|
|
|
+ qv[1].push_back(mfQvector(evInfoTpcRec.GetQvector(iSub).GetHarmonic(), qx[1].at(iSub), qy[1].at(iSub)));
|
|
|
+ qv[2].push_back(mfQvector(evInfoTpcFlat.GetQvector(iSub).GetHarmonic(), qx[2].at(iSub), qy[2].at(iSub)));
|
|
|
psi[0].push_back(qv[0].at(iSub).GetPhi());
|
|
|
psi[1].push_back(qv[1].at(iSub).GetPhi());
|
|
|
- double dPsi = 0.;
|
|
|
- for (int iFlat = 0; iFlat < Nflattening; iFlat++)
|
|
|
- {
|
|
|
- dPsi += 2 / ((iFlat + 1.) * qv[1].at(iSub).GetHarmonic()) * (-vSinFlat[iSub][iFlat].at(cent) * Cos((iFlat + 1.) * qv[1].at(iSub).GetHarmonic() * qv[1].at(iSub).GetPhi()) + vCosFlat[iSub][iFlat].at(cent) * Sin((iFlat + 1.) * qv[1].at(iSub).GetHarmonic() * qv[1].at(iSub).GetPhi()));
|
|
|
- }
|
|
|
- psi[2].push_back(qv[1].at(iSub).GetPhi() + dPsi);
|
|
|
+ psi[2].push_back(qv[2].at(iSub).GetPhi());
|
|
|
}
|
|
|
|
|
|
mfEventInfo evInfoFHCalRaw = procEvent->ProcessRecoFHCalEP(fhcalmodules, 1.);
|
|
|
- mfEventInfo evInfoFHCal = recentering->ProcessRecentering(evInfoFHCalRaw, cent);
|
|
|
+ mfEventInfo evInfoFHCalRec = recentering->ProcessRecentering(evInfoFHCalRaw, cent);
|
|
|
+ mfEventInfo evInfoFHCalFlat = flattening->ProcessFlattening(evInfoFHCalRec, cent);
|
|
|
for (int iSub = NsubEventsTpc; iSub < NsubEvents; iSub++)
|
|
|
{
|
|
|
// std::cout << "iSub = " << iSub << " cent = " << cent << std::endl;
|
|
|
|
|
|
qx[0].push_back(evInfoFHCalRaw.GetQvector(iSub).X());
|
|
|
qy[0].push_back(evInfoFHCalRaw.GetQvector(iSub).Y());
|
|
|
- qx[1].push_back(evInfoFHCal.GetQvector(iSub).X());
|
|
|
- qy[1].push_back(evInfoFHCal.GetQvector(iSub).Y());
|
|
|
- qx[2].push_back(0.);
|
|
|
- qy[2].push_back(0.);
|
|
|
- qv[0].push_back(mfQvector(evInfoFHCal.GetQvector(iSub).GetHarmonic(), qx[0].at(iSub), qy[0].at(iSub)));
|
|
|
- qv[1].push_back(mfQvector(evInfoFHCal.GetQvector(iSub).GetHarmonic(), qx[1].at(iSub), qy[1].at(iSub)));
|
|
|
- qv[2].push_back(mfQvector(evInfoFHCal.GetQvector(iSub).GetHarmonic(), qx[2].at(iSub), qy[2].at(iSub)));
|
|
|
+ qx[1].push_back(evInfoFHCalRec.GetQvector(iSub).X());
|
|
|
+ qy[1].push_back(evInfoFHCalRec.GetQvector(iSub).Y());
|
|
|
+ qx[2].push_back(evInfoFHCalFlat.GetQvector(iSub).X());
|
|
|
+ qy[2].push_back(evInfoFHCalFlat.GetQvector(iSub).Y());
|
|
|
+ qv[0].push_back(mfQvector(evInfoFHCalRaw.GetQvector(iSub).GetHarmonic(), qx[0].at(iSub), qy[0].at(iSub)));
|
|
|
+ qv[1].push_back(mfQvector(evInfoFHCalRec.GetQvector(iSub).GetHarmonic(), qx[1].at(iSub), qy[1].at(iSub)));
|
|
|
+ qv[2].push_back(mfQvector(evInfoFHCalFlat.GetQvector(iSub).GetHarmonic(), qx[2].at(iSub), qy[2].at(iSub)));
|
|
|
psi[0].push_back(qv[0].at(iSub).GetPhi());
|
|
|
psi[1].push_back(qv[1].at(iSub).GetPhi());
|
|
|
- double dPsi = 0.;
|
|
|
- for (int iFlat = 0; iFlat < Nflattening; iFlat++)
|
|
|
- {
|
|
|
- dPsi += 2 / ((iFlat + 1.) * qv[1].at(iSub).GetHarmonic()) * (-vSinFlat[iSub][iFlat].at(cent) * Cos((iFlat + 1.) * qv[1].at(iSub).GetHarmonic() * qv[1].at(iSub).GetPhi()) + vCosFlat[iSub][iFlat].at(cent) * Sin((iFlat + 1.) * qv[1].at(iSub).GetHarmonic() * qv[1].at(iSub).GetPhi()));
|
|
|
- }
|
|
|
- psi[2].push_back(qv[1].at(iSub).GetPhi() + dPsi);
|
|
|
+ psi[2].push_back(qv[2].at(iSub).GetPhi());
|
|
|
}
|
|
|
|
|
|
for (int i = 0; i < 3; i++)
|
|
@@ -288,10 +258,10 @@ int main(int argc, char **argv)
|
|
|
for (int iGap = 0; iGap < NetaGaps; iGap++)
|
|
|
{
|
|
|
// Ntracks >= 2 for TpcR EP
|
|
|
- if (evInfoTpc.GetEpMult(TpcREp[iGap]) < 2)
|
|
|
+ if (evInfoTpcFlat.GetEpMult(TpcREp[iGap]) < 2)
|
|
|
continue;
|
|
|
// Ntracks >= 2 for TpcL EP
|
|
|
- if (evInfoTpc.GetEpMult(TpcLEp[iGap]) < 2)
|
|
|
+ if (evInfoTpcFlat.GetEpMult(TpcLEp[iGap]) < 2)
|
|
|
continue;
|
|
|
|
|
|
hQxVsCent[i][TpcREp[iGap]]->Fill(qv[i].at(TpcREp[iGap]).X(), cent);
|