#ifndef AliAnalysisTaskPi0Flow_cxx
#define AliAnalysisTaskPi0Flow_cxx
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice */
+
// Analysis task to fill histograms with PHOS ESD or AOD clusters and cells
// Authors : Dmitri Peressounko
// Date : 28.05.2011
class AliPHOSCalibData;
class AliESDtrack ;
class AliESDCaloCluster ;
+class AliEPFlattener;
#include "TArrayD.h"
class AliAnalysisTaskPi0Flow : public AliAnalysisTaskSE {
public:
- enum Period { kUndefinedPeriod, kLHC10h, kLHC11h };
+ enum Period { kUndefinedPeriod, kLHC10h, kLHC11h, kLHC13 };
public:
AliAnalysisTaskPi0Flow(const char *name = "AliAnalysisTaskPi0Flow", Period period = kUndefinedPeriod);
virtual void UserCreateOutputObjects();
virtual void UserExec(Option_t *option);
- virtual void Terminate(Option_t *);
+ /* virtual void Terminate(Option_t *); */
void SetPeriod(Period period) { fPeriod = period;}
- void SetCentralityBinning(const TArrayD& edges);
+ void SetCentralityBinning(const TArrayD& edges, const TArrayI& nMixed);
void SetEventMixingRPBinning(UInt_t nBins) { fNEMRPBins = nBins; }
- void SetMixingArraysLength(UInt_t length) { fMixingArraysLength = length; }
+ void SetMaxAbsVertexZ(Float_t z) { fMaxAbsVertexZ = z; }
+ void SetManualV0EPCalc(Bool_t manCalc = true) {fManualV0EPCalc = manCalc;}
+ void SetEnablePHOSModule(int module, Bool_t enable = true);
void SetPHOSBadMap(Int_t mod,TH2I * badMapHist);
+ //Where to read AODB object with EP calibration if not default
+ void SetEPcalibFileName(const TString filename) {fEPcalibFileName = filename; }
-private:
+protected:
AliAnalysisTaskPi0Flow(const AliAnalysisTaskPi0Flow&); // not implemented
AliAnalysisTaskPi0Flow& operator=(const AliAnalysisTaskPi0Flow&); // not implemented
+ virtual void MakeMCHistograms();
+
// Step 0:
AliVEvent* GetEvent();
- AliStack* GetMCStack();
// Step 1:
void SetGeometry();
void SetV0Calibration(); //V0 calibration
void SetESDTrackCuts(); // AliESDtrack cuts ( for esd data )
void SetPHOSCalibData(); // phos re-calibration ( for esd data)
+ void SetFlatteningData(); // phos flattening
// Step 2:
void SetVertex();
// Step 10; Mixing
void ConsiderPi0sMix();
- // Step 11: Update lists
+ // Step 11: MC
+ virtual void DoMC();
+
+ // Step 12: Update lists
void UpdateLists();
Bool_t AreNeibors(Int_t id1,Int_t id2) ;
Double_t ApplyFlatteningV0A(Double_t phi, Double_t c) ; //Apply centrality-dependent flattening
Double_t ApplyFlatteningV0C(Double_t phi, Double_t c) ; //Apply centrality-dependent flattening
Int_t ConvertToInternalRunNumber(Int_t run) ;
- Double_t CoreEnergy(AliVCluster * clu);
+ Double_t CoreEnergy(AliVCluster * clu, AliVCaloCells * cells);
+ void EvalCoreLambdas(AliVCluster * clu, AliVCaloCells * cells, Double_t &m02, Double_t &m20) ;
+ Bool_t TestCoreLambda(Double_t pt,Double_t l1,Double_t l2) ;
void FillHistogram(const char * key,Double_t x) const ; //Fill 1D histogram witn name key
void FillHistogram(const char * key,Double_t x, Double_t y) const ; //Fill 2D histogram witn name key
void FillHistogram(const char * key,Double_t x, Double_t y, Double_t z) const ; //Fill 3D histogram witn name key
+ void FillHistogram(const char * key,Double_t x, Double_t y, Double_t z, Double_t w) const ; //Fill 3D histogram witn name key
TVector3 GetVertexVector(const AliVVertex* vertex);
Int_t GetCentralityBin(Float_t centralityV0M);
Int_t GetRPBin();
- void LogProgress(int step, int internalRunNumber);
+ void LogProgress(int step);
+ void LogSelection(int step, int internalRunNumber);
Bool_t IsGoodChannel(const char * det, Int_t mod,Int_t ix, Int_t iz); //Use addisional bad map for PHOS
-private:
+protected:
+ // transiant constants
+ static const Int_t kNMod = 5;
+
// constants:
static const Double_t kLogWeight= 4.5 ; // log weight for recalibration.
static const Double_t kAlphaCut=0.7 ;
// cluster cut variables:
static const Double_t kMinClusterEnergy = 0.3;
+ static const Double_t kMinBCDistance = 2.5; //distance to nearest bad channel
static const Int_t kMinNCells = 3;
static const Double_t kMinM02 = 0.2;
// Binning, [vtx, centrality, reaction-plane]
static const Int_t kNVtxZBins = 1;
static const Double_t kCentCutoff = 90.; // Ignore Centrality over 90%
- TArrayD fCentEdges; // Centrality Bin Lower edges,
+ TArrayD fCentEdges; // Centrality Bin Lower edges
+ TArrayI fCentNMixed; // Number of mixed events for each centrality bin
UInt_t fNEMRPBins;
- UInt_t fMixingArraysLength;
-
+ // Behavior / cuts
Period fPeriod;
+ Float_t fMaxAbsVertexZ; // in cm
+ Bool_t fManualV0EPCalc;
+ Bool_t fModuleEnabled[kNMod]; //[kNMod]
+
TList * fOutputContainer; //final histogram container
AliVEvent* fEvent; //! Current event
AliESDEvent* fEventESD; //! Current event, if ESD.
AliAODEvent* fEventAOD; //! Current event, if AOD.
- AliStack * fMCStack ;
// Step 1: Run Number, Misalignment Matrix, and Calibration
Int_t fRunNumber; // run number
Float_t fWidthQ[kNCenBins][2][2]; // ...
AliESDtrackCuts *fESDtrackCuts; // Track cut
AliPHOSCalibData *fPHOSCalibData; // PHOS calibration object
-
+ TString fEPcalibFileName;
+ AliEPFlattener * fTPCFlat ; //Object for flattening of TPC
+ AliEPFlattener * fV0AFlat ; //Object for flattening of V0A
+ AliEPFlattener * fV0CFlat ; //Object for flattening of V0C
+
+
// Step 2: Vertex
Double_t fVertex[3];
TVector3 fVertexVector;
// Step 8: Event Photons (PHOS Clusters) selection
TObjArray * fCaloPhotonsPHOS ; //PHOS photons in current event
- // Step 11: Update lists for mixing.
+ // Step 12: Update lists for mixing.
TObjArray* fCaloPhotonsPHOSLists; //! array of TList, Containers for events with PHOS photons
- ClassDef(AliAnalysisTaskPi0Flow, 1); // PHOS analysis task
+ ClassDef(AliAnalysisTaskPi0Flow, 2); // PHOS analysis task
};
#endif