]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/GammaConv/AliGammaConversionAODBGHandler.h
Merge branch 'master' into TPCdev
[u/mrichter/AliRoot.git] / PWGGA / GammaConv / AliGammaConversionAODBGHandler.h
1 //-*- Mode: C++ -*-
2 #ifndef ALIGAMMACONVERSIONAODBGHANDLER_H
3 #define ALIGAMMACONVERSIONAODBGHANDLER_H
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice     */
6
7 ////////////////////////////////////////////////
8 //--------------------------------------------- 
9 // Class  for handling of background calculation
10 //---------------------------------------------
11 ////////////////////////////////////////////////
12
13 #include <vector>
14
15
16 // --- ROOT system ---
17 #include <TObject.h> 
18 #include "AliKFParticle.h"
19 #include "AliAODConversionPhoton.h"
20 #include "AliAODConversionMother.h"
21 #include "TClonesArray.h"
22 #include "AliESDVertex.h"
23
24 #if __GNUC__ >= 3
25 using namespace std;
26 #endif
27
28 typedef vector<AliAODConversionPhoton*> AliGammaConversionAODVector;
29
30 class AliGammaConversionAODBGHandler : public TObject {
31
32 public: 
33    struct GammaConversionVertex
34    {
35       Double_t fX;
36       Double_t fY;
37       Double_t fZ;
38       Double_t fEP;
39    };
40    typedef struct GammaConversionVertex GammaConversionVertex; //!
41
42    typedef vector<AliGammaConversionAODVector> AliGammaConversionBGEventVector;
43    typedef vector<AliGammaConversionBGEventVector> AliGammaConversionMultipicityVector;
44    typedef vector<AliGammaConversionMultipicityVector> AliGammaConversionBGVector;
45
46    AliGammaConversionAODBGHandler();                                                        //constructor
47    AliGammaConversionAODBGHandler(UInt_t binsZ,UInt_t binsMultiplicity,UInt_t nEvents); // constructor
48    AliGammaConversionAODBGHandler(UInt_t collisionSystem,UInt_t centMin,UInt_t centMax,UInt_t nEvents, Bool_t useTrackMult);
49    AliGammaConversionAODBGHandler(const AliGammaConversionAODBGHandler & g);                   //copy constructor
50    AliGammaConversionAODBGHandler & operator = (const AliGammaConversionAODBGHandler & g);     //assignment operator
51    virtual ~AliGammaConversionAODBGHandler();                                               //virtual destructor
52
53    void Initialize(Double_t * const zBinLimitsArray, Double_t * const multiplicityBinLimitsArray);
54
55    Int_t GetZBinIndex(Double_t z) const;
56
57    Int_t GetMultiplicityBinIndex(Int_t mult) const;
58
59    void AddEvent(TList* const eventGammas, Double_t xvalue,Double_t yvalue,Double_t zvalue, Int_t multiplicity, Double_t epvalue = -100);
60    void AddElectronEvent(TClonesArray* const eventENeg, Double_t zvalue, Int_t multiplicity);
61
62    Int_t GetNBGEvents()const {return fNEvents;}
63
64    AliGammaConversionAODVector* GetBGGoodV0s(Int_t zbin, Int_t mbin, Int_t event);
65    AliGammaConversionAODVector* GetBGGoodENeg(Int_t event, Double_t zvalue, Int_t multiplicity);
66    void PrintBGArray();
67
68    GammaConversionVertex * GetBGEventVertex(Int_t zbin, Int_t mbin, Int_t event){return &fBGEventVertex[zbin][mbin][event];}
69
70    Double_t GetBGProb(Int_t z, Int_t m){return fBGProbability[z][m];}
71
72 private:
73
74    Int_t fNEvents; // number of events
75    Int_t ** fBGEventCounter; //! bg counter
76    Int_t ** fBGEventENegCounter;//! bg electron counter
77    Double_t ** fBGProbability; //! prob per bin
78    GammaConversionVertex *** fBGEventVertex;//! array of event vertex
79    Int_t fNBinsZ; //n z bins
80    Int_t fNBinsMultiplicity; //n bins multiplicity
81    Double_t *fBinLimitsArrayZ;//! bin limits z array
82    Double_t *fBinLimitsArrayMultiplicity;//! bin limit multiplicity array
83    AliGammaConversionBGVector fBGEvents; //background events
84    AliGammaConversionBGVector fBGEventsENeg; //background electron events
85    ClassDef(AliGammaConversionAODBGHandler,3)
86 };
87 #endif