]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/GammaConv/AliGammaConversionBGHandler.h
Squashed commit of the following:
[u/mrichter/AliRoot.git] / PWGGA / GammaConv / AliGammaConversionBGHandler.h
1 //-*- Mode: C++ -*-
2 #ifndef ALIGAMMACONVERSIONBGHANDLER_H
3 #define ALIGAMMACONVERSIONBGHANDLER_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 "TClonesArray.h"
20 #include "AliESDVertex.h"
21
22 #if __GNUC__ >= 3
23 using namespace std;
24 #endif
25
26 typedef vector<AliKFParticle*> AliGammaConversionKFVector;
27
28 class AliGammaConversionBGHandler : public TObject {
29
30  public: 
31   struct GammaConversionVertex
32   {
33     Double_t fX;
34     Double_t fY;
35     Double_t fZ;
36   };
37   typedef struct GammaConversionVertex GammaConversionVertex; //!
38
39   typedef vector<AliGammaConversionKFVector> AliGammaConversionBGEventVector;
40   typedef vector<AliGammaConversionBGEventVector> AliGammaConversionMultipicityVector;
41   typedef vector<AliGammaConversionMultipicityVector> AliGammaConversionBGVector;
42
43   AliGammaConversionBGHandler();                                                        //constructor
44   AliGammaConversionBGHandler(UInt_t binsZ,UInt_t binsMultiplicity,UInt_t fNEvents);    //constructor
45   AliGammaConversionBGHandler(const AliGammaConversionBGHandler & g);                   //copy constructor
46   AliGammaConversionBGHandler & operator = (const AliGammaConversionBGHandler & g);     //assignment operator
47   virtual ~AliGammaConversionBGHandler();                                               //virtual destructor
48
49   void Initialize(Double_t * const zBinLimitsArray, Double_t * const multiplicityBinLimitsArray);
50
51   Int_t GetZBinIndex(Double_t z) const;
52
53   Int_t GetMultiplicityBinIndex(Int_t mult) const;
54
55   void AddEvent(TClonesArray * const eventGammas, Double_t xvalue,Double_t yvalue,Double_t zvalue, Int_t multiplicity);
56   void AddElectronEvent(TClonesArray* const eventENeg, Double_t zvalue, Int_t multiplicity);
57
58   Int_t GetNBGEvents()const {return fNEvents;}
59
60   AliGammaConversionKFVector* GetBGGoodV0s(Int_t zbin, Int_t mbin, Int_t event);
61   AliGammaConversionKFVector* GetBGGoodENeg(Int_t event, Double_t zvalue, Int_t multiplicity);
62   void PrintBGArray();
63
64   GammaConversionVertex * GetBGEventVertex(Int_t zbin, Int_t mbin, Int_t event){return &fBGEventVertex[zbin][mbin][event];}
65
66   Double_t GetBGProb(Int_t z, Int_t m){return fBGProbability[z][m];}
67
68  private:
69
70   Int_t fNEvents; // number of events
71   Int_t ** fBGEventCounter; //! bg counter
72   Int_t ** fBGEventENegCounter;//! bg electron counter
73   Double_t ** fBGProbability; //! prob per bin
74   GammaConversionVertex *** fBGEventVertex;//! array of event vertex
75   Int_t fNBinsZ; //n z bins
76   Int_t fNBinsMultiplicity; //n bins multiplicity
77   Double_t *fBinLimitsArrayZ;//! bin limits z array
78   Double_t *fBinLimitsArrayMultiplicity;//! bin limit multiplicity array
79   AliGammaConversionBGVector fBGEvents; //gackground events
80   AliGammaConversionBGVector fBGEventsENeg; //background electron events
81   ClassDef(AliGammaConversionBGHandler,2)
82 };
83 #endif