ROOT logo
#ifndef AliThreePionRadii_cxx
#define AliThreePionRadii_cxx
//
// Class AliThreePionRadii
//
// AliThreePionRadii
// author:
//        Dhevan Gangadharan (dhevan.raja.gangadharan@cern.ch)
//



class TH1F;
class TH3F;
class TH1D;
class TH2D;
class TH3D;

class TProfile;
class TProfile2D;
class TRandom3;

class AliESDEvent;
class AliAODEvent;
class AliESDtrackCuts;
class AliESDpid;

#include "AliAnalysisTask.h"
#include "AliAnalysisTaskSE.h"
#include "AliESDpid.h"
#include "AliAODPid.h"
#include "AliChaoticityEventCollection.h"

class AliThreePionRadii : public AliAnalysisTaskSE {
 public:

  AliThreePionRadii();
  AliThreePionRadii(const Char_t *name);
  virtual ~AliThreePionRadii();
  AliThreePionRadii(const AliThreePionRadii &obj); 
  AliThreePionRadii &operator=(const AliThreePionRadii &obj);
  

  virtual void   UserCreateOutputObjects();
  virtual void   UserExec(Option_t *option);
  virtual void   Terminate(Option_t *);

  enum {
    kPairLimit = 15000,//15000
    kNormPairLimit = 45000,//45000
    kMultLimitPbPb = 2000,//2000
    kMultLimitPP = 300,//300
    kMCarrayLimit = 110000,//110000
    kQbins = 20,
    kQbinsWeights = 40,
    kQbinsPP = 50,// 40
    kQbinsWeightsPP = 40,
    kNDampValues = 16,
    kRmin = 2,// min radii for Momentum resolution calculations
    kDENtypes = 1,// was (kRVALUES)*kNDampValues
    kSCLimit2 = 1,// 1, 6
    kSCLimit3 = 1// 1, 10
  };

  static const Int_t fEDbins   = 3;
  static const Int_t fCentBins = 20;// 0-100% PbPb, pPb, pp
  static const Int_t fRVALUES  = 10;// 


  Int_t GetNumRValues() const {return AliThreePionRadii::fRVALUES;}
  Int_t GetNumCentBins() const {return AliThreePionRadii::fCentBins;}
  Int_t GetNumEDBins() const {return AliThreePionRadii::fEDbins;}
  void SetFSICorrelations(Bool_t legoCase=kTRUE, TH1D *temp1DSS[10]=0x0, TH1D *temp1DOS[10]=0x0);
  //
  void SetMCdecision(Bool_t mc) {fMCcase = mc;}
  void SetPbPbCase(Bool_t pbpb) {fPbPbcase = pbpb;}
  void SetGenerateSignal(Bool_t gen) {fGenerateSignal = gen;}
  void SetNumKt3Bins(Int_t kt3bins) {fKt3bins = kt3bins;}
  void SetV0Mbinning(Bool_t V0Mbinning) {fV0Mbinning = V0Mbinning;}
  void SetCentBinRange(Int_t low, Int_t high) {fCentBinLowLimit = low; fCentBinHighLimit = high;}
  void SetLEGOCase(Bool_t lego) {fLEGO = lego;}
  void SetFilterBit(UInt_t filterbit) {fFilterBit = filterbit;}
  void SetMaxChi2NDF(Float_t MaxChi2NDF) {fMaxChi2NDF = MaxChi2NDF;}
  void SetMinTPCncls(Int_t MinTPCncls) {fMinTPCncls = MinTPCncls;}
  void SetPairSeparationCutEta(Float_t pairsep) {fMinSepPairEta = pairsep;}
  void SetPairSeparationCutPhi(Float_t pairsep) {fMinSepPairPhi = pairsep;}
  void SetNsigmaTPC(Float_t nsig) {fSigmaCutTPC = nsig;}
  void SetNsigmaTOF(Float_t nsig) {fSigmaCutTOF = nsig;}
  void SetRMax(Int_t rbin) {fRMax = rbin;}
  void SetTriggerType(Int_t tt) {fTriggerType = tt;}
  //


 private:

  void ParInit();
  Bool_t AcceptPair(AliChaoticityTrackStruct*, AliChaoticityTrackStruct*);
  Float_t GamovFactor(Int_t, Int_t, Float_t);
  void Shuffle(Int_t*, Int_t, Int_t);
  Short_t FillIndex2part(Short_t);
  Short_t FillIndex3part(Short_t);
  Short_t SetQcutBin(Short_t);
  Short_t SetNormBin(Short_t);
  void SetFillBins2(Short_t, Short_t, Short_t, Int_t, Int_t, Int_t&, Int_t&);
  void SetFillBins3(Short_t, Short_t, Short_t, Short_t, Int_t, Int_t, Int_t, Short_t, Int_t&, Int_t&, Int_t&, Bool_t&, Bool_t&, Bool_t&);
  void ArrangeQs(Short_t, Short_t, Short_t, Short_t, Int_t, Int_t, Int_t, Float_t, Float_t, Float_t, Short_t, Short_t, Float_t&, Float_t&, Float_t&);
  Float_t GetQinv(Short_t, Float_t[], Float_t[]);
  void GetQosl(Float_t[], Float_t[], Float_t&, Float_t&, Float_t&);
  Float_t FSICorrelation2(Int_t, Int_t, Float_t);
  Float_t MCWeight(Int_t, Int_t, Float_t, Int_t, Float_t);
  Float_t MCWeight3D(Bool_t, Int_t, Int_t, Float_t, Float_t, Float_t);
  //
  
  
  const char* fname;// name of class
  AliAODEvent            *fAOD; //!    // AOD object
  TList                  *fOutputList; //! Compact Output list
  AliPIDResponse         *fPIDResponse; //! PID response object; equivalent to AliAODpidUtil
  
  
  AliChaoticityEventCollection ***fEC; //!
  AliChaoticityEventStruct *fEvt; //!
  AliChaoticityTrackStruct *fTempStruct; //!
  TRandom3* fRandomNumber; //!

  
 
  //////////////////////////////
  // histogram structures

  struct St6 {
    TH1D *fNorm3; //!
    TH3D *fTerms3; //!
    TH1D *fTermsQ3; //!
    TH1D *fIdeal; //!
    TH1D *fSmeared; //!
    TH1D *fMeanKt; //!
  };
  struct St5 {
    TH2D *fExplicit2; //!
    TH2D *fExplicit2QW; //!
    TProfile2D *fAvgP; //!
    TH2D *fIdeal; //!
    TH2D *fSmeared; //!
    TH1D *fMeanKt; //!
    //
    TH1D *fMCqinv; //!
    TH1D *fMCqinvQW; //!
    TH2D *fPIDpurityDen; //!
    TH3D *fPIDpurityNum; //!
  };
  struct St_EDB {// SC structure
    struct St5 TwoPT[2];
    struct St6 ThreePT[5];
  };
  struct St_M {
    struct St_EDB EDB[fEDbins];
  };
  struct St4 {
    struct St_M MB[fCentBins];
  };
  struct St3 {
    struct St4 SC[kSCLimit3];
  };
  struct St2 {
    struct St3 Charge3[2];
    struct St4 SC[kSCLimit2];
  };
  struct St1 {
    struct St2 Charge2[2];
  };
  struct St1 Charge1[2];//!


 
  Bool_t fLEGO;
  Bool_t fMCcase;
  Bool_t fAODcase;
  Bool_t fPbPbcase;
  Bool_t fGenerateSignal;
  Bool_t fGeneratorOnly;
  Bool_t fPdensityPairCut;
  Int_t fRMax;
  UInt_t fFilterBit;
  Float_t fMaxChi2NDF;
  Int_t fMinTPCncls;
  Double_t fBfield;
  Int_t fMbin;
  Int_t fFSIindex;
  Int_t fEDbin;
  Int_t fMbins;
  Int_t fMultLimit;  
  Int_t fKt3bins;
  Bool_t fV0Mbinning;
  Int_t fCentBinLowLimit;
  Int_t fCentBinHighLimit;
  Int_t fTriggerType;
  Int_t fEventCounter;
  Int_t fEventsToMix;
  Int_t fZvertexBins;
  Int_t fMultLimits[fCentBins+1];
  Float_t fQcut[3];
  Float_t fQLowerCut;
  Float_t fQlimitC2;
  Int_t fQbinsC2;
  Float_t fNormQcutLow[3];
  Float_t fNormQcutHigh[3];
  Float_t fKupperBound;
  Float_t fQupperBound;
  Int_t   fQbins;
  Float_t fDampStart;
  Float_t fDampStep;
  
  Float_t fTPCTOFboundry;
  Float_t fTOFboundry;
  Float_t fSigmaCutTPC;
  Float_t fSigmaCutTOF;
  
  Float_t fMinSepPairEta;
  Float_t fMinSepPairPhi;
  Float_t fShareQuality;
  Float_t fShareFraction;
  
  Float_t fTrueMassP, fTrueMassPi, fTrueMassK, fTrueMassKs, fTrueMassLam;

  Bool_t fDummyB;

  
  Char_t fDefaultsCharMult[kMultLimitPbPb];//!
  Char_t fDefaultsCharSE[kPairLimit];//!
  Char_t fDefaultsCharME[2*kPairLimit];//!
  Int_t fDefaultsInt[kMultLimitPbPb];//!
  TArrayI *fPairLocationSE[kMultLimitPbPb];//!
  TArrayI *fPairLocationME[kMultLimitPbPb];//!
  TArrayC *fTripletSkip1[kPairLimit];//!
  TArrayC *fTripletSkip2[2*kPairLimit];//!
  TArrayI *fOtherPairLocation1[2][kMultLimitPbPb];//!
  TArrayI *fOtherPairLocation2[2][kMultLimitPbPb];//!
  TArrayC *fNormPairSwitch[3][kMultLimitPbPb];//!
  TArrayC *fPairSplitCut[4][kMultLimitPbPb];//!
  
  AliChaoticityNormPairStruct *fNormPairs[3];//!
  
 public:
  TH1D *fFSI2SS[10];
  TH1D *fFSI2OS[10];

  ClassDef(AliThreePionRadii, 1); 
};

#endif
 AliThreePionRadii.h:1
 AliThreePionRadii.h:2
 AliThreePionRadii.h:3
 AliThreePionRadii.h:4
 AliThreePionRadii.h:5
 AliThreePionRadii.h:6
 AliThreePionRadii.h:7
 AliThreePionRadii.h:8
 AliThreePionRadii.h:9
 AliThreePionRadii.h:10
 AliThreePionRadii.h:11
 AliThreePionRadii.h:12
 AliThreePionRadii.h:13
 AliThreePionRadii.h:14
 AliThreePionRadii.h:15
 AliThreePionRadii.h:16
 AliThreePionRadii.h:17
 AliThreePionRadii.h:18
 AliThreePionRadii.h:19
 AliThreePionRadii.h:20
 AliThreePionRadii.h:21
 AliThreePionRadii.h:22
 AliThreePionRadii.h:23
 AliThreePionRadii.h:24
 AliThreePionRadii.h:25
 AliThreePionRadii.h:26
 AliThreePionRadii.h:27
 AliThreePionRadii.h:28
 AliThreePionRadii.h:29
 AliThreePionRadii.h:30
 AliThreePionRadii.h:31
 AliThreePionRadii.h:32
 AliThreePionRadii.h:33
 AliThreePionRadii.h:34
 AliThreePionRadii.h:35
 AliThreePionRadii.h:36
 AliThreePionRadii.h:37
 AliThreePionRadii.h:38
 AliThreePionRadii.h:39
 AliThreePionRadii.h:40
 AliThreePionRadii.h:41
 AliThreePionRadii.h:42
 AliThreePionRadii.h:43
 AliThreePionRadii.h:44
 AliThreePionRadii.h:45
 AliThreePionRadii.h:46
 AliThreePionRadii.h:47
 AliThreePionRadii.h:48
 AliThreePionRadii.h:49
 AliThreePionRadii.h:50
 AliThreePionRadii.h:51
 AliThreePionRadii.h:52
 AliThreePionRadii.h:53
 AliThreePionRadii.h:54
 AliThreePionRadii.h:55
 AliThreePionRadii.h:56
 AliThreePionRadii.h:57
 AliThreePionRadii.h:58
 AliThreePionRadii.h:59
 AliThreePionRadii.h:60
 AliThreePionRadii.h:61
 AliThreePionRadii.h:62
 AliThreePionRadii.h:63
 AliThreePionRadii.h:64
 AliThreePionRadii.h:65
 AliThreePionRadii.h:66
 AliThreePionRadii.h:67
 AliThreePionRadii.h:68
 AliThreePionRadii.h:69
 AliThreePionRadii.h:70
 AliThreePionRadii.h:71
 AliThreePionRadii.h:72
 AliThreePionRadii.h:73
 AliThreePionRadii.h:74
 AliThreePionRadii.h:75
 AliThreePionRadii.h:76
 AliThreePionRadii.h:77
 AliThreePionRadii.h:78
 AliThreePionRadii.h:79
 AliThreePionRadii.h:80
 AliThreePionRadii.h:81
 AliThreePionRadii.h:82
 AliThreePionRadii.h:83
 AliThreePionRadii.h:84
 AliThreePionRadii.h:85
 AliThreePionRadii.h:86
 AliThreePionRadii.h:87
 AliThreePionRadii.h:88
 AliThreePionRadii.h:89
 AliThreePionRadii.h:90
 AliThreePionRadii.h:91
 AliThreePionRadii.h:92
 AliThreePionRadii.h:93
 AliThreePionRadii.h:94
 AliThreePionRadii.h:95
 AliThreePionRadii.h:96
 AliThreePionRadii.h:97
 AliThreePionRadii.h:98
 AliThreePionRadii.h:99
 AliThreePionRadii.h:100
 AliThreePionRadii.h:101
 AliThreePionRadii.h:102
 AliThreePionRadii.h:103
 AliThreePionRadii.h:104
 AliThreePionRadii.h:105
 AliThreePionRadii.h:106
 AliThreePionRadii.h:107
 AliThreePionRadii.h:108
 AliThreePionRadii.h:109
 AliThreePionRadii.h:110
 AliThreePionRadii.h:111
 AliThreePionRadii.h:112
 AliThreePionRadii.h:113
 AliThreePionRadii.h:114
 AliThreePionRadii.h:115
 AliThreePionRadii.h:116
 AliThreePionRadii.h:117
 AliThreePionRadii.h:118
 AliThreePionRadii.h:119
 AliThreePionRadii.h:120
 AliThreePionRadii.h:121
 AliThreePionRadii.h:122
 AliThreePionRadii.h:123
 AliThreePionRadii.h:124
 AliThreePionRadii.h:125
 AliThreePionRadii.h:126
 AliThreePionRadii.h:127
 AliThreePionRadii.h:128
 AliThreePionRadii.h:129
 AliThreePionRadii.h:130
 AliThreePionRadii.h:131
 AliThreePionRadii.h:132
 AliThreePionRadii.h:133
 AliThreePionRadii.h:134
 AliThreePionRadii.h:135
 AliThreePionRadii.h:136
 AliThreePionRadii.h:137
 AliThreePionRadii.h:138
 AliThreePionRadii.h:139
 AliThreePionRadii.h:140
 AliThreePionRadii.h:141
 AliThreePionRadii.h:142
 AliThreePionRadii.h:143
 AliThreePionRadii.h:144
 AliThreePionRadii.h:145
 AliThreePionRadii.h:146
 AliThreePionRadii.h:147
 AliThreePionRadii.h:148
 AliThreePionRadii.h:149
 AliThreePionRadii.h:150
 AliThreePionRadii.h:151
 AliThreePionRadii.h:152
 AliThreePionRadii.h:153
 AliThreePionRadii.h:154
 AliThreePionRadii.h:155
 AliThreePionRadii.h:156
 AliThreePionRadii.h:157
 AliThreePionRadii.h:158
 AliThreePionRadii.h:159
 AliThreePionRadii.h:160
 AliThreePionRadii.h:161
 AliThreePionRadii.h:162
 AliThreePionRadii.h:163
 AliThreePionRadii.h:164
 AliThreePionRadii.h:165
 AliThreePionRadii.h:166
 AliThreePionRadii.h:167
 AliThreePionRadii.h:168
 AliThreePionRadii.h:169
 AliThreePionRadii.h:170
 AliThreePionRadii.h:171
 AliThreePionRadii.h:172
 AliThreePionRadii.h:173
 AliThreePionRadii.h:174
 AliThreePionRadii.h:175
 AliThreePionRadii.h:176
 AliThreePionRadii.h:177
 AliThreePionRadii.h:178
 AliThreePionRadii.h:179
 AliThreePionRadii.h:180
 AliThreePionRadii.h:181
 AliThreePionRadii.h:182
 AliThreePionRadii.h:183
 AliThreePionRadii.h:184
 AliThreePionRadii.h:185
 AliThreePionRadii.h:186
 AliThreePionRadii.h:187
 AliThreePionRadii.h:188
 AliThreePionRadii.h:189
 AliThreePionRadii.h:190
 AliThreePionRadii.h:191
 AliThreePionRadii.h:192
 AliThreePionRadii.h:193
 AliThreePionRadii.h:194
 AliThreePionRadii.h:195
 AliThreePionRadii.h:196
 AliThreePionRadii.h:197
 AliThreePionRadii.h:198
 AliThreePionRadii.h:199
 AliThreePionRadii.h:200
 AliThreePionRadii.h:201
 AliThreePionRadii.h:202
 AliThreePionRadii.h:203
 AliThreePionRadii.h:204
 AliThreePionRadii.h:205
 AliThreePionRadii.h:206
 AliThreePionRadii.h:207
 AliThreePionRadii.h:208
 AliThreePionRadii.h:209
 AliThreePionRadii.h:210
 AliThreePionRadii.h:211
 AliThreePionRadii.h:212
 AliThreePionRadii.h:213
 AliThreePionRadii.h:214
 AliThreePionRadii.h:215
 AliThreePionRadii.h:216
 AliThreePionRadii.h:217
 AliThreePionRadii.h:218
 AliThreePionRadii.h:219
 AliThreePionRadii.h:220
 AliThreePionRadii.h:221
 AliThreePionRadii.h:222
 AliThreePionRadii.h:223
 AliThreePionRadii.h:224
 AliThreePionRadii.h:225
 AliThreePionRadii.h:226
 AliThreePionRadii.h:227
 AliThreePionRadii.h:228
 AliThreePionRadii.h:229
 AliThreePionRadii.h:230
 AliThreePionRadii.h:231
 AliThreePionRadii.h:232
 AliThreePionRadii.h:233
 AliThreePionRadii.h:234
 AliThreePionRadii.h:235
 AliThreePionRadii.h:236
 AliThreePionRadii.h:237
 AliThreePionRadii.h:238
 AliThreePionRadii.h:239
 AliThreePionRadii.h:240
 AliThreePionRadii.h:241
 AliThreePionRadii.h:242
 AliThreePionRadii.h:243
 AliThreePionRadii.h:244
 AliThreePionRadii.h:245
 AliThreePionRadii.h:246
 AliThreePionRadii.h:247
 AliThreePionRadii.h:248
 AliThreePionRadii.h:249
 AliThreePionRadii.h:250
 AliThreePionRadii.h:251