class AliAODEvent;
class AliSpectraAODTrackCuts;
-//class AliSpectraAODHistoManager;
+class TProfile;
-#include "TH1I.h"
#include "TNamed.h"
+#include "TFile.h"
+#include "TKey.h"
+#include "AliOADBContainer.h"
+#include "AliVEvent.h"
class AliSpectraAODEventCuts : public TNamed
{
enum { kProcessedEvents = 0,kPhysSelEvents,kAcceptedEvents, kVtxRange, kVtxCentral, kVtxNoEvent, kQVector, kNVtxCuts};
// Constructors
- AliSpectraAODEventCuts() : TNamed(), fAOD(0), fTrackBits(0), fIsMC(0), fUseCentPatchAOD049(0), fIsSelected(0), fCentralityCutMin(0), fCentralityCutMax(0), fQVectorPosCutMin(0), fQVectorPosCutMax(0), fQVectorNegCutMin(0), fQVectorNegCutMax(0), fHistoCuts(0),fHistoVtxBefSel(0),fHistoVtxAftSel(0),fHistoEtaBefSel(0),fHistoEtaAftSel(0),fHistoNChAftSel(0),fHistoQVectorPos(0),fHistoQVectorNeg(0) {}
+ AliSpectraAODEventCuts() :
+ TNamed(),
+ fAOD(0),
+ fSelectBit(AliVEvent::kMB),
+ fCentralityMethod(),
+ fTrackBits(1),
+ fIsMC(0),
+ fIsLHC10h(0),
+ fTrackCuts(0),
+ fIsSelected(0),
+ fCentralityCutMin(0.),
+ fCentralityCutMax(999),
+ fQVectorCutMin(-999.),
+ fQVectorCutMax(999.),
+ fVertexCutMin(-10.),
+ fVertexCutMax(10.),
+ fMultiplicityCutMin(-999.),
+ fMultiplicityCutMax(99999.),
+ fqV0C(-999.),
+ fqV0A(-999.),
+ fqV0Cx(-999.),
+ fqV0Ax(-999.),
+ fqV0Cy(-999.),
+ fqV0Ay(-999.),
+ fPsiV0C(-999.),
+ fPsiV0A(-999.),
+ fCent(-999.),
+ fOutput(0),
+ fCalib(0),
+ fRun(-1),
+ fMultV0(0),
+ fV0Cpol1(-1),
+ fV0Cpol2(-1),
+ fV0Cpol3(-1),
+ fV0Cpol4(-1),
+ fV0Apol1(-1),
+ fV0Apol2(-1),
+ fV0Apol3(-1),
+ fV0Apol4(-1),
+ fQvecIntList(0),
+ fQvecIntegral(0),
+ fSplineArrayV0A(0),
+ fSplineArrayV0C(0)
+ {
+ for (Int_t i = 0; i<10; i++){
+ fMeanQxa2[i] = -1;
+ fMeanQya2[i] = -1;
+ fMeanQxc2[i] = -1;
+ fMeanQyc2[i] = -1;
+ }
+ }
AliSpectraAODEventCuts(const char *name);
virtual ~AliSpectraAODEventCuts() {}
- void SetIsMC(Bool_t isMC = kFALSE) {fIsMC = isMC; };
- Bool_t GetIsMC() const { return fIsMC;};
+ void SetEventSelectionBit( UInt_t val ) { fSelectBit = val; }
+ void SetCentralityMethod(const char* method) { fCentralityMethod = method; }
+ void SetTrackBits(UInt_t TrackBits) {fTrackBits=TrackBits;}
+ void SetIsMC(Bool_t isMC = kFALSE) {fIsMC = isMC; };
+ void SetIsLHC10h(Bool_t isLHC10h = kFALSE) {fIsLHC10h = isLHC10h; };
+ void SetCentralityCutMin(Float_t cut) { fCentralityCutMin = cut; }
+ void SetCentralityCutMax(Float_t cut) { fCentralityCutMax = cut; }
+ void SetQVectorCut(Float_t min,Float_t max) { fQVectorCutMin = min; fQVectorCutMax = max; }
+ void SetVertexCut(Float_t min,Float_t max) { fVertexCutMin = min; fVertexCutMax = max; }
+ void SetMultiplicityCut(Float_t min,Float_t max) { fMultiplicityCutMin = min; fMultiplicityCutMax = max; }
+
+ UInt_t GetEventSelectionBit() const { return fSelectBit;}
+ TString GetCentralityMethod() const { return fCentralityMethod;}
+ UInt_t GetTrackType() const { return fTrackBits;}
+ Bool_t GetIsMC() const { return fIsMC;}
+ Bool_t GetIsLHC10h() const { return fIsLHC10h;}
+ Float_t GetCentralityMin() const { return fCentralityCutMin; }
+ Float_t GetCentralityMax() const { return fCentralityCutMax; }
+ Float_t GetQVectorCutMin() const { return fQVectorCutMin; }
+ Float_t GetQVectorCutMax() const { return fQVectorCutMax; }
+ Float_t GetVertexCutMin() const { return fVertexCutMin; }
+ Float_t GetVertexCutMax() const { return fVertexCutMax; }
+ Float_t GetMultiplicityCutMin() const { return fMultiplicityCutMin; }
+ Float_t GetMultiplicityCutMax() const { return fMultiplicityCutMax; }
+ Double_t GetqV0C() const { return fqV0C; }
+ Double_t GetqV0A() const { return fqV0A; }
+ Double_t GetqV0Cx() const { return fqV0Cx; }
+ Double_t GetqV0Ax() const { return fqV0Ax; }
+ Double_t GetqV0Cy() const { return fqV0Cy; }
+ Double_t GetqV0Ay() const { return fqV0Ay; }
+ Double_t GetPsiV0C() const { return fPsiV0C; }
+ Double_t GetPsiV0A() const { return fPsiV0A; }
+ Double_t GetCent() const { return fCent; }
+ TList *GetOutputList() {return fOutput;};
+ TList *GetCalibList() {return fCalib;};
+ void SetCalibFile(TFile *f) {
+ TIter next(f->GetListOfKeys());
+ TKey *key;
+ while ((key = (TKey*)next())) {
+ AliOADBContainer * obj=(AliOADBContainer*)key->ReadObj();
+ fCalib->Add(obj);
+ }
+ };
- void SetUseCentPatchAOD049(Bool_t useCentPatchAOD049 = kFALSE) {fUseCentPatchAOD049 = useCentPatchAOD049; };
- Bool_t GetUseCentPatchAOD049() const { return fUseCentPatchAOD049;};
+ void SetQvecIntegralFile(TFile *f) {
+ TIter next(f->GetListOfKeys());
+ TKey *key;
+ while ((key = (TKey*)next())) {
+ TH2F * h=(TH2F*)key->ReadObj();
+ fQvecIntList->Add(h);
+ }
+ };
// Methods
Bool_t IsSelected(AliAODEvent * aod,AliSpectraAODTrackCuts *trackcuts);
Bool_t CheckVtxRange();
Bool_t CheckCentralityCut();
+ Bool_t CheckMultiplicityCut();
Bool_t CheckQVectorCut();
- void SetCentralityCutMin(Float_t cut) { fCentralityCutMin = cut; }
- void SetCentralityCutMax(Float_t cut) { fCentralityCutMax = cut; }
- void SetQVectorPosCut(Float_t min,Float_t max) { fQVectorPosCutMin = min; fQVectorPosCutMax = max; }
- void SetQVectorNegCut(Float_t min,Float_t max) { fQVectorNegCutMin = min; fQVectorNegCutMax = max; }
- void SetTrackBits(UInt_t TrackBits) {fTrackBits=TrackBits;}
-
-
- UInt_t GetTrackType() const { return fTrackBits;}
- TH1I * GetHistoCuts() { return fHistoCuts; }
- TH1F * GetHistoVtxBefSel() { return fHistoVtxBefSel; }
- TH1F * GetHistoVtxAftSel() { return fHistoVtxAftSel; }
- TH1F * GetHistoEtaBefSel() { return fHistoEtaBefSel; }
- TH1F * GetHistoEtaAftSel() { return fHistoEtaAftSel; }
- TH1F * GetHistoNChAftSel() { return fHistoNChAftSel; }
- TH1F * GetHistoQVectorPos() { return fHistoQVectorPos; }
- TH1F * GetHistoQVectorNeg() { return fHistoQVectorNeg; }
- Float_t GetCentralityMin() const { return fCentralityCutMin; }
- Float_t GetCentralityMax() const { return fCentralityCutMax; }
- Float_t GetQVectorPosCutMin() const { return fQVectorPosCutMin; }
- Float_t GetQVectorPosCutMax() const { return fQVectorPosCutMax; }
- Float_t GetQVectorNegCutMin() const { return fQVectorNegCutMin; }
- Float_t GetQVectorNegCutMax() const { return fQVectorNegCutMax; }
+ Double_t CalculateQVectorLHC10h();
void PrintCuts();
- Double_t ApplyCentralityPatchAOD049();
-
- Float_t NumberOfEvents() { return fHistoCuts->GetBinContent(kAcceptedEvents+1); }
- Float_t NumberOfProcessedEvents() { return fHistoCuts->GetBinContent(kProcessedEvents+1); }
- Float_t NumberOfPhysSelEvents() { return fHistoCuts->GetBinContent(kPhysSelEvents+1); }
+ Bool_t OpenInfoCalbration(Int_t run);
+ Short_t GetCentrCode(AliVEvent* ev);
+
+ Float_t NumberOfEvents() { return ((TH1I*)fOutput->FindObject("fHistoCuts"))->GetBinContent(kAcceptedEvents+1); }
+ Float_t NumberOfProcessedEvents() { return ((TH1I*)fOutput->FindObject("fHistoCuts"))->GetBinContent(kProcessedEvents+1); }
+ Float_t NumberOfPhysSelEvents() { return ((TH1I*)fOutput->FindObject("fHistoCuts"))->GetBinContent(kPhysSelEvents+1); }
Long64_t Merge(TCollection* list);
+ Double_t GetQvecPercentile(Int_t v0side);
+ Bool_t CheckSplineArray(TObjArray * splarr);
+ TObjArray *GetSplineArrayV0A() { return fSplineArrayV0A; }
+ TObjArray *GetSplineArrayV0C() { return fSplineArrayV0C; }
+
+ Double_t CalculateQVectorMC(Int_t v0side);
private:
AliAODEvent *fAOD; //! AOD event
+ UInt_t fSelectBit; // Select events according to AliAnalysisTaskJetServices bit maps
+ TString fCentralityMethod; // Method to determine centrality
UInt_t fTrackBits; // Type of track to be used in the Qvector calculation
- Bool_t fIsMC;// true if processing MC
- Bool_t fUseCentPatchAOD049;// Patch for centrality selection on AOD049
+ Bool_t fIsMC; // true if processing MC
+ Bool_t fIsLHC10h; // for LHC10h
AliSpectraAODTrackCuts *fTrackCuts; //! track cuts
Bool_t fIsSelected; // True if cuts are selected
Float_t fCentralityCutMin; // minimum centrality percentile
Float_t fCentralityCutMax; // maximum centrality percentile
- Float_t fQVectorPosCutMin; // minimum qvecPos
- Float_t fQVectorPosCutMax; // maximum qvecPos
- Float_t fQVectorNegCutMin; // minimum qvecNeg
- Float_t fQVectorNegCutMax; // maximum qvecNeg
- TH1I *fHistoCuts; // Cuts statistics
- TH1F *fHistoVtxBefSel; // Vtx distr before event selection
- TH1F *fHistoVtxAftSel; // Vtx distr after event selection
- TH1F *fHistoEtaBefSel; // Eta distr before event selection
- TH1F *fHistoEtaAftSel; // Eta distr after event selection
- TH1F *fHistoNChAftSel; // NCh distr after event selection
- TH1F *fHistoQVectorPos; // QVectorPos
- TH1F *fHistoQVectorNeg; // QVectorNeg
+ Float_t fQVectorCutMin; // minimum qvecPos
+ Float_t fQVectorCutMax; // maximum qvecPos
+ Float_t fVertexCutMin; // minimum vertex position
+ Float_t fVertexCutMax; // maximum vertex position
+ Float_t fMultiplicityCutMin; // minimum multiplicity position
+ Float_t fMultiplicityCutMax; // maximum multiplicity position
+ Double_t fqV0C; //q vector in the VZERO-C
+ Double_t fqV0A; //q vector in the VZERO-A
+ Double_t fqV0Cx; //q vector in the VZERO-C, x-comp
+ Double_t fqV0Ax; //q vector in the VZERO-A, x-comp
+ Double_t fqV0Cy; //q vector in the VZERO-C, y-comp
+ Double_t fqV0Ay; //q vector in the VZERO-A, y-comp
+ Double_t fPsiV0C; //EP from VZERO-C
+ Double_t fPsiV0A; //EP from VZERO-A
+ Double_t fCent; //centrality according to fCentralityMethod
+ TList *fOutput; // output list
+ TList *fCalib; // output list
+ Int_t fRun; // run number - for calibration
+ TProfile* fMultV0; //! profile from V0 multiplicity
+ Float_t fV0Cpol1; // mean V0C multiplicity - from fit profile - ring 1
+ Float_t fV0Cpol2; // mean V0C multiplicity - from fit profile - ring 2
+ Float_t fV0Cpol3; // mean V0C multiplicity - from fit profile - ring 3
+ Float_t fV0Cpol4; // mean V0C multiplicity - from fit profile - ring 4
+ Float_t fV0Apol1; // mean V0A multiplicity - from fit profile - ring 1
+ Float_t fV0Apol2; // mean V0A multiplicity - from fit profile - ring 2
+ Float_t fV0Apol3; // mean V0A multiplicity - from fit profile - ring 3
+ Float_t fV0Apol4; // mean V0A multiplicity - from fit profile - ring 4
+ Float_t fMeanQxa2[10]; // mean Qxa values for centr - recentering
+ Float_t fMeanQya2[10]; // mean Qya values for centr - recentering
+ Float_t fMeanQxc2[10]; // mean Qxc values for centr - recentering
+ Float_t fMeanQyc2[10]; // mean Qyc values for centr - recentering
+
+ TList *fQvecIntList; // List with Qvec Integrated vs centrality distribution
+ TH2D * fQvecIntegral; // ! Integrated Qvec distribution
+ TObjArray * fSplineArrayV0A; // TSpline array for VZERO-A
+ TObjArray * fSplineArrayV0C; // TSpline array for VZERO-C
+
AliSpectraAODEventCuts(const AliSpectraAODEventCuts&);
AliSpectraAODEventCuts& operator=(const AliSpectraAODEventCuts&);
- ClassDef(AliSpectraAODEventCuts, 2);
+ ClassDef(AliSpectraAODEventCuts, 6);
};
#endif