Fixing violations
[u/mrichter/AliRoot.git] / EMCAL / AliEMCALJetFinderAlgoUA1Hybrid.h
1
2 #ifndef ALIEMCALJETFINDERALGOUA1HYBRID_H
3 #define ALIEMCALJETFINDERALGOUA1HYBRID_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 AliEMCALJetFinderAlgoUA1Hybrid : public AliEMCALJetFinderAlgo
27 {
28
29 public:
30   AliEMCALJetFinderAlgoUA1Hybrid();
31   ~AliEMCALJetFinderAlgoUA1Hybrid();
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 Sort(AliEMCALJetFinderAlgoUA1Unit* unit,Int_t integer);
55   void FindBG();
56   void FindJetEtaPhi(Int_t counter);
57   void FindJetEnergy();
58   void StoreJetInfo();
59   void FindJets();
60   void QS(AliEMCALJetFinderAlgoUA1Unit *unit, Int_t left, Int_t right);
61   AliEMCALJetFinderAlgoUA1Unit* GetUnitArrayPointer() {return fUnit;}
62
63 protected:
64   AliEMCALJetFinderAlgoUA1Unit   *fUnit; //Array of JetFinder Unit objects (treated as the cells)
65   AliEMCALHadronCorrectionv1 *fHadCorr; //Pointer to Hadron Correction Object
66   AliEMCALJet       fJet;              //Jet object
67   Int_t             fNumIter;          //Number of iterations for entire algorithm
68   Int_t             fNumUnits;         //Number of units in the unit object array (same as num towers in EMCAL)
69   Float_t           fESeed;            //Minimum energy a cell must have to be considered a jet seed
70   Float_t           fConeRad;          //Size of cone radius 
71   Float_t           fJetEMin;          //Minimum energy a cluster must have to be considered a jet
72   Float_t           fEtMin;            //Minimum cell Et cut
73   Float_t           fMinMove;          //Minimum move of jet centre from its previous position
74   Float_t           fMaxMove;          //Maximum move allowed of jet centre from its initiator cell position
75   Float_t           fBGMaxMove;        //Maximum allowed change in background energy between iterations 
76   Float_t           fPtCut;            //Pt cut for tracks to minimise background contribution
77
78   Float_t           fEBGTotal;         //Total background energy
79   Float_t           fEBGTotalOld;      //Old total background energy
80   Float_t           fEBGAve;           //Average background energy
81   Float_t           fEnergy;           //Energy 
82   Float_t           fJetEta;           //Jet eta value
83   Float_t           fJetPhi;           //Jet phi value
84   Float_t           fEtaInit;          //Jet initiate cell eta
85   Float_t           fPhiInit;          //Jet initiate cell phi
86   Float_t           fEtaB;             //Value of jet eta Before
87   Float_t           fPhiB;             //Value of jet phi Before
88   Float_t           fJetESum;          //Sum of weighted jet energy
89   Float_t           fJetEtaSum;        //Sum of weighted jet eta
90   Float_t           fJetPhiSum;        //Sum of weighted jet phi
91   Float_t           fDEta;             //Offset of unit from jet eta value
92   Float_t           fDPhi;             //Offset of unit from jet phi value
93   Float_t           fDistP;            //Distance of new jet axis position from Previous position
94   Float_t           fDistI;            //Distance of new jet axis position from Initiator cell position
95   Float_t           fTempE;            //Temp E for comparing with JetEMin
96   Float_t           fRad;              //Distance of cell from jet cone centre
97   Int_t             fNumInCone;        //Number of units in the jet cone
98   Int_t             fNumJets;          //Number of jets in an event
99   Bool_t            fArrayInitialised; //To check that array of units is initialised
100
101   ClassDef(AliEMCALJetFinderAlgoUA1Hybrid,2)
102
103 };
104 #endif
105