Made more robust
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALJetFinderAlgoOmni.h
1
2 #ifndef ALIEMCALJETFINDERALGOOMNI_H
3 #define ALIEMCALJETFINDERALGOOMNI_H
4
5 //THIS IS SARAH'S REVISED UA1 CODE WITH CHANGES FOR ETA/PHI ITERATION INCLUDED!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
6 //THIS Also includes summing ALL cells in the jetcone towards the jet energy NOT just those above threshold!!!!!
7
8 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
9  *  *  * See cxx source for full Copyright notice     */
10
11 /* $Id$ */
12
13 //*--Author: Sarah Blyth (LBL)
14 //*--Based on UA1 jet algorithm from LUND JETSET called from EMC-erj
15
16
17 #include "TTask.h"
18 #include "AliEMCALJetFinderInput.h"
19 #include "AliEMCALJetFinderOutput.h"
20 #include "AliEMCALJetFinderAlgo.h"
21 #include "AliEMCALJetFinderAlgoUA1Unit.h"
22 #include "AliEMCALJet.h"
23 #include "AliEMCALHadronCorrectionv1.h"
24
25
26 class AliEMCALJetFinderAlgoOmni : public AliEMCALJetFinderAlgo
27 {
28
29 public:
30   AliEMCALJetFinderAlgoOmni();
31   ~AliEMCALJetFinderAlgoOmni();
32   void InitUnitArray();                      
33   void SetNumUnits(Int_t numUnits)           {fNumUnits = numUnits;}
34   Int_t GetNumUnits() const                  {return fNumUnits;}
35   void SetJetESeed(Float_t eSeed)            {fESeed = eSeed;}
36   Float_t GetJetESeed() const                {return fESeed;}
37   void SetConeRad(Float_t coneRad)           {fConeRad = coneRad;}
38   Float_t GetConeRad() const                 {return fConeRad;}
39   void SetJetEMin(Float_t jetEMin)           {fJetEMin = jetEMin;}
40   Float_t GetJetEMin() const                 {return fJetEMin;}
41   void SetEtMin(Float_t etMin)               {fEtMin = etMin;}
42   Float_t GetEtMin() const                   {return fEtMin;}
43   void SetMinMove(Float_t minMove)           {fMinMove = minMove;}
44   void SetMaxMove(Float_t maxMove)           {fMaxMove = maxMove;}
45   void SetBGMaxMove(Float_t bgMaxMove)       {fBGMaxMove = bgMaxMove;}
46   void SetPtCut(Float_t ptCut)               {fPtCut = ptCut;}
47   Float_t GetPtCut() const                   {return fPtCut;}
48   void SetHadronCorrection(AliEMCALHadronCorrectionv1 *hadCorr) {fHadCorr = hadCorr;}
49   AliEMCALHadronCorrectionv1* GetHadronCorrection() const {return fHadCorr;}
50   void SetJetFindingParameters(Int_t numUnits, Float_t eSeed, Float_t coneRad, Float_t jetEMin, Float_t etMin, 
51                                Float_t minMove, Float_t maxMove, Float_t bgMaxMove); 
52   void SetJetFindingParameters(Int_t numUnits, Float_t eSeed, Float_t coneRad, Float_t jetEMin, Float_t etMin);
53   void FillUnitArray(AliEMCALJetFinderAlgoUA1FillUnitFlagType_t flag);
54   void SetBGCalcType(AliEMCALJetFinderAlgoBGCalcType_t flag2, Float_t bgPar = -1) {fBGType = flag2; fBGPar = bgPar;}
55   void Sort(AliEMCALJetFinderAlgoUA1Unit* unit,Int_t integer);
56   void FindBG();
57   void RatioBG();
58   void ConeBG();
59   void ConstantBG();
60   void FindJetEtaPhi(Int_t counter);
61   void FindJetEnergy();
62   void StoreJetInfo();
63   void FindJets();
64   void QS(AliEMCALJetFinderAlgoUA1Unit *unit, Int_t left, Int_t right);
65   AliEMCALJetFinderAlgoUA1Unit* GetUnitArrayPointer() const {return fUnit;}
66   AliEMCALJetFinderAlgoUA1Unit* GetUnitArrayPointerNoCuts() const {return fUnitNoCuts;}
67
68 protected:
69   AliEMCALJetFinderAlgoUA1Unit   *fUnit; //Array of JetFinder Unit objects (treated as the cells)
70   AliEMCALJetFinderAlgoUA1Unit   *fUnitNoCuts; //Second array of JetFinder Unit objects ('raw data')
71   AliEMCALHadronCorrectionv1 *fHadCorr; //Pointer to Hadron Correction Object
72   AliEMCALJet       fJet;              //Jet object
73   AliEMCALJetFinderAlgoBGCalcType_t fBGType; //Method of background calculation to be used 
74   Int_t             fNumIter;          //Number of iterations for entire algorithm
75   Int_t             fNumUnits;         //Number of units in the unit object array (same as num towers in EMCAL)
76   Float_t           fESeed;            //Minimum energy a cell must have to be considered a jet seed
77   Float_t           fConeRad;          //Size of cone radius 
78   Float_t           fJetEMin;          //Minimum energy a cluster must have to be considered a jet
79   Float_t           fEtMin;            //Minimum cell Et cut
80   Float_t           fMinMove;          //Minimum move of jet centre from its previous position
81   Float_t           fMaxMove;          //Maximum move allowed of jet centre from its initiator cell position
82   Float_t           fBGMaxMove;        //Maximum allowed change in background energy between iterations 
83   Float_t           fPtCut;            //Pt cut for tracks to minimise background contribution
84   Float_t           fBGPar;            //Parameter to be used for method of background calculation  
85
86   Float_t           fEBGTotal;         //Total background energy
87   Float_t           fEBGTotalOld;      //Old total background energy
88   Float_t           fEBGAve;           //Average background energy
89   Float_t           fEnergy;           //Energy 
90   Float_t           fJetEta;           //Jet eta value
91   Float_t           fJetPhi;           //Jet phi value
92   Float_t           fEtaInit;          //Jet initiate cell eta
93   Float_t           fPhiInit;          //Jet initiate cell phi
94   Float_t           fEtaB;             //Value of jet eta Before
95   Float_t           fPhiB;             //Value of jet phi Before
96   Float_t           fJetESum;          //Sum of weighted jet energy
97   Float_t           fJetEtaSum;        //Sum of weighted jet eta
98   Float_t           fJetPhiSum;        //Sum of weighted jet phi
99   Float_t           fDEta;             //Offset of unit from jet eta value
100   Float_t           fDPhi;             //Offset of unit from jet phi value
101   Float_t           fDistP;            //Distance of new jet axis position from Previous position
102   Float_t           fDistI;            //Distance of new jet axis position from Initiator cell position
103   Float_t           fTempE;            //Temp E for comparing with JetEMin
104   Float_t           fRad;              //Distance of cell from jet cone centre
105   Int_t             fNumInCone;        //Number of units in the jet cone
106   Int_t             fNumJets;          //Number of jets in an event
107   Bool_t            fArrayInitialised; //To check that array of units is initialised
108
109   ClassDef(AliEMCALJetFinderAlgoOmni,2)
110
111 };
112 #endif
113