1 #ifndef ALIEMCALTENDERSUPPLY_H
2 #define ALIEMCALTENDERSUPPLY_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
7 ////////////////////////////////////////////////////////////////////////
9 // EMCAL tender, apply corrections to EMCAl clusters //
10 // and do track matching //
11 // Author : Deepa Thomas (Utrecht University) //
13 ////////////////////////////////////////////////////////////////////////
15 #include <AliTenderSupply.h>
18 class AliEMCALRecoUtils;
19 class AliEMCALGeometry;
25 class AliEMCALTenderSupply: public AliTenderSupply {
28 AliEMCALTenderSupply();
29 AliEMCALTenderSupply(const char *name, const AliTender *tender=NULL);
30 virtual ~AliEMCALTenderSupply();
33 virtual void ProcessEvent();
36 void SetEMCALGeometryName(TString name) { fEMCALGeoName = name ;}
37 TString EMCALGeometryName() const { return fEMCALGeoName ;}
39 void SetDebugLevel(Int_t level) {fDebugLevel=level ;}
41 void SetNonLinearityFunction(Int_t fun) { fNonLinearFunc = fun ;}
42 Int_t GetNonLinearityFunction() const { return fNonLinearFunc ;}
44 void SetNonLinearityThreshold(Int_t threshold) { fNonLinearThreshold = threshold ;} //only for Alexei's non linearity correction
45 Int_t GetNonLinearityThreshold() const { return fNonLinearThreshold ;}
47 void SwitchOnReCalibrateCluster() { fReCalibCluster = kTRUE ;}
48 void SwitchOffReCalibrateCluster() { fReCalibCluster = kFALSE ;}
50 void SwitchOnReCalibrateCell() { fReCalibCell = kTRUE ;}
51 void SwitchOffReCalibrateCell() { fReCalibCell = kFALSE ;}
53 void SwitchOnRecalculateClusPos() { fRecalClusPos = kTRUE ;}
54 void SwitchOffRecalculateClusPos() { fRecalClusPos = kFALSE ;}
56 void SwitchOnCellFiducialRegion() { fFiducial = kTRUE ;}
57 void SwitchOffCellFiducialRegion() { fFiducial = kFALSE ;}
59 void SetNumberOfcellsFromEMCALBorder(Int_t n) { fNCellsFromEMCALBorder = n ;}
60 Int_t GetNumberOfcellsFromEMCALBorder() const { return fNCellsFromEMCALBorder ;}
62 void SwitchOnRecalDistBadChannel() { fRecalDistToBadChannels = kTRUE ;}
63 void SwitchOffRecalDistBadChannel() { fRecalDistToBadChannels = kFALSE ;}
65 Float_t GetRCut() const { return fRcut ;}
66 void SetRCut(Float_t Rcut) { fRcut = Rcut ;}
68 Double_t GetMass() const { return fMass ;}
69 void SetMass(Double_t mass){ fMass=mass ;}
71 Double_t GetStep() const { return fStep ;}
72 void SetStep(Double_t step){ fStep=step ;}
77 Bool_t InitBadChannels();
79 Bool_t InitMisalignMatrix();
81 void SetClusterMatchedToTrack(AliESDEvent *event);
82 void SetTracksMatchedToCluster(AliESDEvent *event);
84 void RecalibrateCells(); //Recalibrate cells
86 AliEMCALGeometry *fEMCALGeo; //! EMCAL geometry
87 TString fEMCALGeoName; // Name of geometry to use.
89 AliEMCALRecoUtils *fEMCALRecoUtils; // Pointer to EMCAL utilities for clusterization
90 TString fConfigName; // Name of analysis configuration file
92 Int_t fDebugLevel; // debug level
94 Int_t fNonLinearFunc; // Non linearity function
95 Int_t fNonLinearThreshold; // Non linearity threshold value for kBeamTesh non linearity function
97 Bool_t fReCalibCluster; // switch for Recalibrate clusters
98 Bool_t fReCalibCell; // switch for Recalibrate cell
100 TGeoHMatrix *fEMCALMatrix[10]; // Geometry matrices with alignments
101 Bool_t fRecalClusPos; // switch for applying missalignment
103 Bool_t fFiducial; // switch for checking cells in the fiducial region
104 Int_t fNCellsFromEMCALBorder; // number os cells from EMCAL border
105 Bool_t fRecalDistToBadChannels; // switch for recalculation cluster position from bad channel
107 TTree *fInputTree; // input data tree
108 TFile *fInputFile; // input data file
109 TString fFilepass; // input data pass number
111 Double_t fMass; // mass for track matching
112 Double_t fStep; // step size during track matching
113 Float_t fRcut; // residual cut for track matching
115 AliEMCALTenderSupply(const AliEMCALTenderSupply&c);
116 AliEMCALTenderSupply& operator= (const AliEMCALTenderSupply&c);
118 ClassDef(AliEMCALTenderSupply, 2); // TPC tender task