|
@@ -4,6 +4,7 @@
|
|
|
#include "mfInputReader.h"
|
|
|
#include "mfRecentering.h"
|
|
|
#include "mfFlattening.h"
|
|
|
+#include "mfAcceptanceFilter.h"
|
|
|
|
|
|
#include <vector>
|
|
|
#include <map>
|
|
@@ -23,9 +24,11 @@
|
|
|
#include <PicoDstFHCal.h>
|
|
|
|
|
|
using mfdca::Ndim;
|
|
|
+using mfEp::BadFHCalModules;
|
|
|
using mfEp::EpNames;
|
|
|
using mfEp::NetaGaps;
|
|
|
using mfEp::Nflattening;
|
|
|
+using mfEp::Nmodules;
|
|
|
using mfEp::NsubEvents;
|
|
|
using mfEp::NsubEventsTpc;
|
|
|
using mfEp::RangeAngle;
|
|
@@ -40,11 +43,12 @@ using TMath::Sin;
|
|
|
|
|
|
int main(int argc, char **argv)
|
|
|
{
|
|
|
+ Bool_t isAcceptanceFilterOn = false;
|
|
|
TString iFileName, oFileName, dcaFileName, recenteringFileName, flatteningFileName;
|
|
|
|
|
|
if (argc < 11)
|
|
|
{
|
|
|
- std::cerr << "./get-qv -i INPUTFILE/LIST -o OUTPUT.root -dca DCA_FIT.root -recentering RECENTERING.root -flattening FLATTENING.root" << std::endl;
|
|
|
+ std::cerr << "./get-qv -i INPUTFILE/LIST -o OUTPUT.root -dca DCA_FIT.root -recentering RECENTERING.root -flattening FLATTENING.root [OPTIONAL: --bad-acceptance]" << std::endl;
|
|
|
return 1;
|
|
|
}
|
|
|
for (int i = 1; i < argc; i++)
|
|
@@ -53,7 +57,8 @@ int main(int argc, char **argv)
|
|
|
std::string(argv[i]) != "-o" &&
|
|
|
std::string(argv[i]) != "-dca" &&
|
|
|
std::string(argv[i]) != "-recentering" &&
|
|
|
- std::string(argv[i]) != "-flattening")
|
|
|
+ std::string(argv[i]) != "-flattening" &&
|
|
|
+ std::string(argv[i]) != "--bad-acceptance")
|
|
|
{
|
|
|
std::cerr << "\n[ERROR]: Unknown parameter " << i << ": " << argv[i] << std::endl;
|
|
|
return 2;
|
|
@@ -110,6 +115,12 @@ int main(int argc, char **argv)
|
|
|
std::cerr << "\n[ERROR]: Input file name was not specified " << std::endl;
|
|
|
return 1;
|
|
|
}
|
|
|
+ if (std::string(argv[i]) == "--bad-acceptance")
|
|
|
+ {
|
|
|
+ std::cout << "Message: Acceptance filter is ON." << std::endl;
|
|
|
+ isAcceptanceFilterOn = true;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -133,7 +144,14 @@ int main(int argc, char **argv)
|
|
|
mfFlattening *flattening = new mfFlattening();
|
|
|
flattening->ReadFlatteningFile(flatteningFileName);
|
|
|
|
|
|
+ // Imitate bad acceptance
|
|
|
+ mfAcceptanceFilter *AccFilter = new mfAcceptanceFilter();
|
|
|
+ if (isAcceptanceFilterOn)
|
|
|
+ AccFilter->Activate();
|
|
|
+
|
|
|
// Init output profiles
|
|
|
+ TH2F *hTpcAcceptancePhi[2];
|
|
|
+ TH2F *hFHCalAcceptance[2];
|
|
|
TH2F *hQxVsCent[3][NsubEvents];
|
|
|
TH2F *hQyVsCent[3][NsubEvents];
|
|
|
TH2F *hPsiEpVsCent[3][NsubEvents];
|
|
@@ -142,6 +160,12 @@ int main(int argc, char **argv)
|
|
|
TH2F *hPsiEpRLVsCent[3][NetaGaps + 1];
|
|
|
TH2F *hPsiRpRVsCent[3][NetaGaps + 1];
|
|
|
TH2F *hPsiRpLVsCent[3][NetaGaps + 1];
|
|
|
+
|
|
|
+ for (int i = 0; i < 2; i++)
|
|
|
+ {
|
|
|
+ hTpcAcceptancePhi[i] = new TH2F(Form("hTpcAcceptancePhi_%i", i), Form("hTpcAcceptancePhi_%i", i), 360, -Pi(), Pi(), NresBin, 0., 100.);
|
|
|
+ hFHCalAcceptance[i] = new TH2F(Form("hFHCalAcceptance_%i", i), Form("hFHCalAcceptance_%i", i), 2 * Nmodules, 0, 2 * Nmodules, NresBin, 0., 100.);
|
|
|
+ }
|
|
|
for (int iType = 0; iType < 3; iType++)
|
|
|
{
|
|
|
for (int i = 0; i < NsubEvents; i++)
|
|
@@ -203,6 +227,7 @@ int main(int argc, char **argv)
|
|
|
if (cent == -1)
|
|
|
continue;
|
|
|
procEvent->SetInputReader(inputReader);
|
|
|
+ procEvent->SetAcceptaceFilter(AccFilter);
|
|
|
|
|
|
// std::cout << "\tNtracks = " << recoTracks->GetEntriesFast() << std::endl;
|
|
|
|
|
@@ -232,6 +257,18 @@ int main(int argc, char **argv)
|
|
|
psi[2].push_back(qv[2].at(iSub).GetPhi());
|
|
|
}
|
|
|
|
|
|
+ for (int iTr = 0; iTr < recoTracks->GetEntriesFast(); iTr++)
|
|
|
+ {
|
|
|
+ auto recoTrack = (PicoDstRecoTrack *)recoTracks->UncheckedAt(iTr);
|
|
|
+ if (!recoTrack)
|
|
|
+ continue;
|
|
|
+
|
|
|
+ hTpcAcceptancePhi[0]->Fill(recoTrack->GetPhi(), cent);
|
|
|
+ if (!AccFilter->isGoodTpc(recoTrack->GetPhi()))
|
|
|
+ continue;
|
|
|
+ hTpcAcceptancePhi[1]->Fill(recoTrack->GetPhi(), cent);
|
|
|
+ }
|
|
|
+
|
|
|
mfEventInfo evInfoFHCalRaw = procEvent->ProcessRecoFHCalEP(fhcalmodules, 1.);
|
|
|
mfEventInfo evInfoFHCalRec = recentering->ProcessRecentering(evInfoFHCalRaw, cent);
|
|
|
mfEventInfo evInfoFHCalFlat = flattening->ProcessFlattening(evInfoFHCalRec, cent);
|
|
@@ -253,6 +290,20 @@ int main(int argc, char **argv)
|
|
|
psi[2].push_back(qv[2].at(iSub).GetPhi());
|
|
|
}
|
|
|
|
|
|
+ for (int iMod = 0; iMod < fhcalmodules->GetEntriesFast(); iMod++)
|
|
|
+ {
|
|
|
+ auto fhcalModule = (PicoDstFHCal *)fhcalmodules->UncheckedAt(iMod);
|
|
|
+ if (!fhcalModule)
|
|
|
+ continue;
|
|
|
+ if ((iMod == BadFHCalModules.at(0)) || (iMod == BadFHCalModules.at(1)))
|
|
|
+ continue;
|
|
|
+
|
|
|
+ hFHCalAcceptance[0]->Fill(iMod, cent, fhcalModule->GetEnergy());
|
|
|
+ if (!AccFilter->isGoodFHCal(iMod))
|
|
|
+ continue;
|
|
|
+ hFHCalAcceptance[1]->Fill(iMod, cent, fhcalModule->GetEnergy());
|
|
|
+ }
|
|
|
+
|
|
|
for (int i = 0; i < 3; i++)
|
|
|
{
|
|
|
for (int iGap = 0; iGap < NetaGaps; iGap++)
|
|
@@ -303,6 +354,11 @@ int main(int argc, char **argv)
|
|
|
// Init output file
|
|
|
TFile *fo = new TFile(oFileName.Data(), "recreate");
|
|
|
fo->cd();
|
|
|
+ for (int i = 0; i < 2; i++)
|
|
|
+ {
|
|
|
+ hTpcAcceptancePhi[i]->Write();
|
|
|
+ hFHCalAcceptance[i]->Write();
|
|
|
+ }
|
|
|
fo->mkdir("Raw");
|
|
|
fo->mkdir("Recentering");
|
|
|
fo->mkdir("Flattening");
|