EMCAL Tender Supply added.
[u/mrichter/AliRoot.git] / ANALYSIS / TenderSupplies / AliEMCALTenderSupply.h
1 #ifndef ALIEMCALTENDERSUPPLY_H
2 #define ALIEMCALTENDERSUPPLY_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 ////////////////////////////////////////////////////////////////////////
8 //                                                                    //
9 //  EMCAL tender, apply corrections to EMCAl clusters                 //
10 //  and do track matching                                             //
11 //  Author : Deepa Thomas (Utrecht University)                        //                      
12 //                                                                    //
13 ////////////////////////////////////////////////////////////////////////
14
15 #include <AliTenderSupply.h>
16
17 class AliVCluster;
18 class AliEMCALRecoUtils;
19 class AliEMCALGeometry;
20 class TGeoHMatrix;
21 class TTree;
22 class TFile;
23 class TString;
24
25 class AliEMCALTenderSupply: public AliTenderSupply {
26   
27 public:
28   AliEMCALTenderSupply();
29   AliEMCALTenderSupply(const char *name, const AliTender *tender=NULL);
30   virtual ~AliEMCALTenderSupply();
31
32   virtual void   Init();
33   virtual void   ProcessEvent();
34   
35   Bool_t  InitBadChannels();
36   Bool_t  InitRecalibCluster();
37   Bool_t  InitMisalignMatrix();
38   
39   void SetEMCALGeometryName(TString name)  { fEMCALGeoName = name  ;}
40   TString EMCALGeometryName()       const  { return fEMCALGeoName  ;}
41
42   void  SetDebugLevel(Int_t level)         {fDebugLevel=level      ;}
43
44   void  SetNonLinearityFunction(Int_t fun) { fNonLinearFunc = fun  ;}
45   Int_t GetNonLinearityFunction() const    { return fNonLinearFunc ;}
46   
47   void  SetNonLinearityThreshold(Int_t threshold) { fNonLinearThreshold = threshold ;} //only for Alexei's non linearity correction
48   Int_t GetNonLinearityThreshold() const          { return fNonLinearThreshold      ;}
49
50   void  SwitchOnReCalibrate()              { fReCalib = kTRUE  ;}
51   void  SwitchOffReCalibrate()             { fReCalib = kFALSE ;}
52
53   void  SwitchOnRecalculateClusPos()       { fRecalClusPos = kTRUE  ;}
54   void  SwitchOffRecalculateClusPos()      { fRecalClusPos = kFALSE ;}
55
56   void  SwitchOnCellFiducialRegion()       { fFiducial = kTRUE  ;}
57   void  SwitchOffCellFiducialRegion()      { fFiducial = kFALSE ;}
58
59   void  SetNumberOfcellsFromEMCALBorder(Int_t n) { fNCellsFromEMCALBorder = n    ;}
60   Int_t GetNumberOfcellsFromEMCALBorder() const  { return fNCellsFromEMCALBorder ;}
61
62   void  SwitchOnRecalDistBadChannel()      { fRecalDistToBadChannels = kTRUE  ;}
63   void  SwitchOffRecalDistBadChannel()     { fRecalDistToBadChannels = kFALSE ;}
64
65   Float_t  GetRCut()       const { return fRcut ;}
66   void     SetRCut(Float_t Rcut) { fRcut = Rcut ;}
67
68   Double_t GetMass()       const { return fMass ;}
69   void     SetMass(Double_t mass){ fMass=mass   ;}
70
71   Double_t GetStep()       const { return fStep ;}
72   void     SetStep(Double_t step){ fStep=step   ;}
73
74   void SetClusterMatchedToTrack(AliESDEvent *event);
75   void SetTracksMatchedToCluster(AliESDEvent *event);
76  
77 private:
78
79   AliEMCALGeometry  * fEMCALGeo;               //! EMCAL geometry
80   TString             fEMCALGeoName;           // Name of geometry to use.
81   
82   AliEMCALRecoUtils * fEMCALRecoUtils;         // Pointer to EMCAL utilities for clusterization
83   TString             fConfigName;             // Name of analysis configuration file
84   
85   Int_t               fDebugLevel;             // debug level
86
87   Int_t               fNonLinearFunc;          // Non linearity function 
88   Int_t               fNonLinearThreshold;     // Non linearity threshold value for kBeamTesh non linearity function   
89
90   Bool_t              fReCalib;                // switch for Recalibrate clusters
91
92   TGeoHMatrix       * fEMCALMatrix[10];        // Geometry matrices with alignments
93   Bool_t              fRecalClusPos;           // switch for applying missalignment
94
95   Bool_t              fFiducial;               // switch for checking cells in the fiducial region
96   Int_t               fNCellsFromEMCALBorder;  // number os cells from EMCAL border     
97   Bool_t              fRecalDistToBadChannels; // switch for recalculation cluster position from bad channel      
98
99   TTree             * fInputTree;              // input data tree
100   TFile             * fInputFile;              // input data file 
101   TString             fFilepass;               // input data pass number
102
103   Double_t            fMass;                   // mass for track matching
104   Double_t            fStep;                   // step size during track matching
105   Float_t             fRcut;                   // residual cut for track matching   
106   
107   AliEMCALTenderSupply(const AliEMCALTenderSupply&c);
108   AliEMCALTenderSupply& operator= (const AliEMCALTenderSupply&c);
109   
110   ClassDef(AliEMCALTenderSupply, 1); // TPC tender task
111 };
112
113
114 #endif
115