ROOT logo
#ifndef ALIANALYSISTASKPI0DIFFEFFICIENCY_H
#define ALIANALYSISTASKPI0DIFFEFFICIENCY_H

// Task calculating effciency of pi0 registration 
// as a difference between spectrum after and before 
// embedding

class TClonesArray;
class AliAODCaloCluster ;
class AliPHOSAodCluster ;
class AliPHOSCalibData ;
class AliPHOSGeometry ;

#include "AliAnalysisTaskSE.h"

class AliAnalysisTaskPi0DiffEfficiency : public AliAnalysisTaskSE {
public:
  AliAnalysisTaskPi0DiffEfficiency();
  AliAnalysisTaskPi0DiffEfficiency(const char *name);
  virtual ~AliAnalysisTaskPi0DiffEfficiency() {}
  
  virtual void   UserCreateOutputObjects();
  virtual void   UserExec(Option_t *option);

  void SetPHOSBadMap(Int_t mod,TH2I * h)
  {
    if(fPHOSBadMap[mod]) delete fPHOSBadMap[mod] ;
    fPHOSBadMap[mod]=new TH2I(*h) ;
    printf("Set %s \n",fPHOSBadMap[mod]->GetName());
  }

  protected:
  AliAnalysisTaskPi0DiffEfficiency(const AliAnalysisTaskPi0DiffEfficiency& a) ;
  AliAnalysisTaskPi0DiffEfficiency& operator=(const AliAnalysisTaskPi0DiffEfficiency& ){return *this;} // not implemented
  Bool_t IsGoodChannel(const char * det, Int_t mod,Int_t ix, Int_t iz); //Use addisional bad map for PHOS
  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 weight) const ; //Fill 3D histogram witn name key
  Bool_t TestLambda(Double_t e,Double_t l1,Double_t l2) ;  //Evaluate Dispersion cuts for photons
  Bool_t TestLambda2(Double_t e,Double_t l1,Double_t l2) ;  //Evaluate Dispersion cuts for photons
  Double_t TestCPV(Double_t dx, Double_t dz, Double_t pt, Int_t charge);
  Bool_t TestTOF(Double_t t, Double_t e) ;
  
  void ProcessMC() ;
  Double_t CoreEnergy(AliPHOSAodCluster * clu); 
   
private:
  Bool_t IsSameCluster(AliAODCaloCluster * c1,AliAODCaloCluster * c2)const ;
  void EvalLambdas(AliAODCaloCluster * clu, Int_t iR,Double_t &m02, Double_t &m20) ;
  Double_t PrimaryWeight(Double_t x) ;
 
private:
  AliStack * fStack ;               //! Stack of primary
  THashList * fOutputContainer;     //! final histogram container
  TList * fPHOSEvents[1][10][11] ;  //! Containers for events with PHOS photons
  TClonesArray * fPHOSEvent ;       //!PHOS photons in current event
  TClonesArray * fPHOSEvent1 ;      //!PHOS photons in current event
  TClonesArray * fPHOSEvent2 ;      //!PHOS photons in current event
  AliPHOSCalibData *fPHOSCalibData; //! PHOS calibration object
  TF1 *fNonLinCorr;                 // Non-linearity correction
 
  //Reaction plane for v2
  Float_t fRPfull ; //!Reaction plain calculated with full TPC 
  Float_t fRPA ;    //!Reaction plain calculated with A-side TPC: eta>0.15 
  Float_t fRPC ;    //!Reaction plain calculated with C-side TPC: eta<-0.15
  Float_t fRPFar ;  //!Reaction plain calculated with TPC: eta>0.6 
  Float_t fRPAFar ; //!Reaction plain calculated with A-side TPC: eta>0.6 
  Float_t fRPCFar ; //!Reaction plain calculated with C-side TPC: eta<-0.6

  Float_t fCentrality ; //!Centrality of the currecnt event

  Int_t fCenBin ;       //! Current centrality bin

  TH2I *fPHOSBadMap[6] ;    //!Container for PHOS bad channels map

  AliPHOSGeometry  *fPHOSGeo;  //! PHOS geometry
  Int_t fEventCounter;         //! number of analyzed events
 
  ClassDef(AliAnalysisTaskPi0DiffEfficiency, 2); // PHOS analysis task
};

#endif
 AliAnalysisTaskPi0DiffEfficiency.h:1
 AliAnalysisTaskPi0DiffEfficiency.h:2
 AliAnalysisTaskPi0DiffEfficiency.h:3
 AliAnalysisTaskPi0DiffEfficiency.h:4
 AliAnalysisTaskPi0DiffEfficiency.h:5
 AliAnalysisTaskPi0DiffEfficiency.h:6
 AliAnalysisTaskPi0DiffEfficiency.h:7
 AliAnalysisTaskPi0DiffEfficiency.h:8
 AliAnalysisTaskPi0DiffEfficiency.h:9
 AliAnalysisTaskPi0DiffEfficiency.h:10
 AliAnalysisTaskPi0DiffEfficiency.h:11
 AliAnalysisTaskPi0DiffEfficiency.h:12
 AliAnalysisTaskPi0DiffEfficiency.h:13
 AliAnalysisTaskPi0DiffEfficiency.h:14
 AliAnalysisTaskPi0DiffEfficiency.h:15
 AliAnalysisTaskPi0DiffEfficiency.h:16
 AliAnalysisTaskPi0DiffEfficiency.h:17
 AliAnalysisTaskPi0DiffEfficiency.h:18
 AliAnalysisTaskPi0DiffEfficiency.h:19
 AliAnalysisTaskPi0DiffEfficiency.h:20
 AliAnalysisTaskPi0DiffEfficiency.h:21
 AliAnalysisTaskPi0DiffEfficiency.h:22
 AliAnalysisTaskPi0DiffEfficiency.h:23
 AliAnalysisTaskPi0DiffEfficiency.h:24
 AliAnalysisTaskPi0DiffEfficiency.h:25
 AliAnalysisTaskPi0DiffEfficiency.h:26
 AliAnalysisTaskPi0DiffEfficiency.h:27
 AliAnalysisTaskPi0DiffEfficiency.h:28
 AliAnalysisTaskPi0DiffEfficiency.h:29
 AliAnalysisTaskPi0DiffEfficiency.h:30
 AliAnalysisTaskPi0DiffEfficiency.h:31
 AliAnalysisTaskPi0DiffEfficiency.h:32
 AliAnalysisTaskPi0DiffEfficiency.h:33
 AliAnalysisTaskPi0DiffEfficiency.h:34
 AliAnalysisTaskPi0DiffEfficiency.h:35
 AliAnalysisTaskPi0DiffEfficiency.h:36
 AliAnalysisTaskPi0DiffEfficiency.h:37
 AliAnalysisTaskPi0DiffEfficiency.h:38
 AliAnalysisTaskPi0DiffEfficiency.h:39
 AliAnalysisTaskPi0DiffEfficiency.h:40
 AliAnalysisTaskPi0DiffEfficiency.h:41
 AliAnalysisTaskPi0DiffEfficiency.h:42
 AliAnalysisTaskPi0DiffEfficiency.h:43
 AliAnalysisTaskPi0DiffEfficiency.h:44
 AliAnalysisTaskPi0DiffEfficiency.h:45
 AliAnalysisTaskPi0DiffEfficiency.h:46
 AliAnalysisTaskPi0DiffEfficiency.h:47
 AliAnalysisTaskPi0DiffEfficiency.h:48
 AliAnalysisTaskPi0DiffEfficiency.h:49
 AliAnalysisTaskPi0DiffEfficiency.h:50
 AliAnalysisTaskPi0DiffEfficiency.h:51
 AliAnalysisTaskPi0DiffEfficiency.h:52
 AliAnalysisTaskPi0DiffEfficiency.h:53
 AliAnalysisTaskPi0DiffEfficiency.h:54
 AliAnalysisTaskPi0DiffEfficiency.h:55
 AliAnalysisTaskPi0DiffEfficiency.h:56
 AliAnalysisTaskPi0DiffEfficiency.h:57
 AliAnalysisTaskPi0DiffEfficiency.h:58
 AliAnalysisTaskPi0DiffEfficiency.h:59
 AliAnalysisTaskPi0DiffEfficiency.h:60
 AliAnalysisTaskPi0DiffEfficiency.h:61
 AliAnalysisTaskPi0DiffEfficiency.h:62
 AliAnalysisTaskPi0DiffEfficiency.h:63
 AliAnalysisTaskPi0DiffEfficiency.h:64
 AliAnalysisTaskPi0DiffEfficiency.h:65
 AliAnalysisTaskPi0DiffEfficiency.h:66
 AliAnalysisTaskPi0DiffEfficiency.h:67
 AliAnalysisTaskPi0DiffEfficiency.h:68
 AliAnalysisTaskPi0DiffEfficiency.h:69
 AliAnalysisTaskPi0DiffEfficiency.h:70
 AliAnalysisTaskPi0DiffEfficiency.h:71
 AliAnalysisTaskPi0DiffEfficiency.h:72
 AliAnalysisTaskPi0DiffEfficiency.h:73
 AliAnalysisTaskPi0DiffEfficiency.h:74
 AliAnalysisTaskPi0DiffEfficiency.h:75
 AliAnalysisTaskPi0DiffEfficiency.h:76
 AliAnalysisTaskPi0DiffEfficiency.h:77
 AliAnalysisTaskPi0DiffEfficiency.h:78
 AliAnalysisTaskPi0DiffEfficiency.h:79
 AliAnalysisTaskPi0DiffEfficiency.h:80
 AliAnalysisTaskPi0DiffEfficiency.h:81
 AliAnalysisTaskPi0DiffEfficiency.h:82
 AliAnalysisTaskPi0DiffEfficiency.h:83