ROOT logo
///////////////////////////////////////////////////////////////////////////
//                                                                       //
// AliFemtoBPLCMS3DCorrFctn: a class to calculate 3D correlation         //
// for pairs of identical particles.                                     //
//                                                                       //
///////////////////////////////////////////////////////////////////////////

#ifndef ALIFEMTOBPLCMS3DCORRFCTN_H
#define ALIFEMTOBPLCMS3DCORRFCTN_H

#include "AliFemtoCorrFctn.h"
//#include "AliFemtoCoulomb.h"
#include "AliFemtoPairCut.h"
//#include "AliFemtoHisto.h"
#include "TH3D.h"
//#include "AliFemtoSmearPair.h"

class AliFemtoBPLCMS3DCorrFctn : public AliFemtoCorrFctn {
public:
  AliFemtoBPLCMS3DCorrFctn(char* title, const int& nbins, const float& QLo, const float& QHi);
  AliFemtoBPLCMS3DCorrFctn(const AliFemtoBPLCMS3DCorrFctn& aCorrFctn);
  virtual ~AliFemtoBPLCMS3DCorrFctn();

  AliFemtoBPLCMS3DCorrFctn& operator=(const AliFemtoBPLCMS3DCorrFctn& aCorrFctn);

  virtual AliFemtoString Report();
  virtual void AddRealPair( AliFemtoPair* aPair);
  virtual void AddMixedPair( AliFemtoPair* aPair);

  virtual void Finish();

  TH3D* Numerator();
  TH3D* Denominator();
  TH3D* Ratio();
  TH3D* QinvHisto();

  // here are get and set for the range over which the correlation function 
  // is normalized (in Qinv).  The range is set to 0.15..0.18 in the constuctor
  // by default, but the Set's below override this
  void SetNormRangeLo(float qLo);
  void SetNormRangeHi(float qHi);
  float GetNormRangeLo() const;
  float GetNormRangeHi() const;

  void WriteOutHistos();
  virtual TList* GetOutputList();

  //  void SetCoulombCorrection(AliFemtoCoulomb* Correction);

  void SetUseRPSelection(unsigned short aRPSel);

  //  void SetSmearPair(AliFemtoSmearPair*);
  void SetRout(double guess);
  void SetRside(double guess);
  void SetRlong(double guess);
  void SetLambda(double guess);

private:
/*   // here are a whole bunch of histos that get filled if we do resolution correction */
/*   TH3D* fIDNumHisto;        // true pairs numerator   */
/*   TH3D* fIDDenHisto;        // true pairs denominator */
/*   TH3D* fIDRatHisto;        // true pairs ratio       */
/*   //  */
/*   TH3D* fSMNumHisto;        // mixed pairs numerator   */
/*   TH3D* fSMDenHisto;	    // mixed pairs denominator */
/*   TH3D* fSMRatHisto;	    // mixed pairs ratio       */
/*   // */
/*   TH3D* fCorrectionHisto;   // correction histogram */
/*   TH3D* fCorrCFHisto;       // Corrected CF */

  TH3D* fNumerator;         // numerator
  TH3D* fDenominator;       // denominator
  //  TH3D* fUncorrectedDenominator;
  TH3D* fRatio;             // ratio - the correlation function
  TH3D* fQinvHisto;         // Qinv weights

  // for resolution correction
  //  AliFemtoSmearPair* fSmearPair; //!
  double fLambda;           // lambda for smearing correction
  double fRout2;            // Rout for smearing correction
  double fRside2;           // Rside for smearing correction
  double fRlong2;           // Rlong for smearing correction

  // upper and lower bounds of Qinv region where to do normalization
  float fQinvNormLo;        // Lower bound of Qinv normalization range
  float fQinvNormHi;        // Upper bound of Qinv normalization range

  // and here are the number of pairs in that region...
  unsigned long int fNumRealsNorm; // pairs in numerator in Qinv normalization range
  unsigned long int fNumMixedNorm; // pairs in denominator in Qinv normalization range

 protected:
  unsigned short fUseRPSelection;  // The pair cut uses RP selection

  //  AliFemtoCoulomb* fCorrection; //!
  

#ifdef __ROOT__
  ClassDef(AliFemtoBPLCMS3DCorrFctn, 1)
#endif
};

inline  TH3D* AliFemtoBPLCMS3DCorrFctn::Numerator(){return fNumerator;}
inline  TH3D* AliFemtoBPLCMS3DCorrFctn::Denominator(){return fDenominator;}
//inline  TH3D* AliFemtoBPLCMS3DCorrFctn::UncorrectedDenominator(){return fUncorrectedDenominator;}
inline  TH3D* AliFemtoBPLCMS3DCorrFctn::Ratio(){return fRatio;}
inline  TH3D* AliFemtoBPLCMS3DCorrFctn::QinvHisto(){return fQinvHisto;}
inline  void AliFemtoBPLCMS3DCorrFctn::SetNormRangeLo(float qLo){fQinvNormLo = qLo;}
inline  void AliFemtoBPLCMS3DCorrFctn::SetNormRangeHi(float qHi){fQinvNormHi = qHi;}
inline  float AliFemtoBPLCMS3DCorrFctn::GetNormRangeLo() const{return fQinvNormLo;}
inline  float AliFemtoBPLCMS3DCorrFctn::GetNormRangeHi() const{return fQinvNormHi;}
//inline  void AliFemtoBPLCMS3DCorrFctn::SetCoulombCorrection(AliFemtoCoulomb* Correction){fCorrection = Correction;}
//inline  void AliFemtoBPLCMS3DCorrFctn::SetSmearPair(AliFemtoSmearPair* sp){fSmearPair = sp;}

inline  void AliFemtoBPLCMS3DCorrFctn::SetRout(double r){fRout2 = r*r;}
inline  void AliFemtoBPLCMS3DCorrFctn::SetRside(double r){fRside2 = r*r;}
inline  void AliFemtoBPLCMS3DCorrFctn::SetRlong(double r){fRlong2 = r*r;}
inline  void AliFemtoBPLCMS3DCorrFctn::SetLambda(double l){fLambda = l;}

#endif

 AliFemtoBPLCMS3DCorrFctn.h:1
 AliFemtoBPLCMS3DCorrFctn.h:2
 AliFemtoBPLCMS3DCorrFctn.h:3
 AliFemtoBPLCMS3DCorrFctn.h:4
 AliFemtoBPLCMS3DCorrFctn.h:5
 AliFemtoBPLCMS3DCorrFctn.h:6
 AliFemtoBPLCMS3DCorrFctn.h:7
 AliFemtoBPLCMS3DCorrFctn.h:8
 AliFemtoBPLCMS3DCorrFctn.h:9
 AliFemtoBPLCMS3DCorrFctn.h:10
 AliFemtoBPLCMS3DCorrFctn.h:11
 AliFemtoBPLCMS3DCorrFctn.h:12
 AliFemtoBPLCMS3DCorrFctn.h:13
 AliFemtoBPLCMS3DCorrFctn.h:14
 AliFemtoBPLCMS3DCorrFctn.h:15
 AliFemtoBPLCMS3DCorrFctn.h:16
 AliFemtoBPLCMS3DCorrFctn.h:17
 AliFemtoBPLCMS3DCorrFctn.h:18
 AliFemtoBPLCMS3DCorrFctn.h:19
 AliFemtoBPLCMS3DCorrFctn.h:20
 AliFemtoBPLCMS3DCorrFctn.h:21
 AliFemtoBPLCMS3DCorrFctn.h:22
 AliFemtoBPLCMS3DCorrFctn.h:23
 AliFemtoBPLCMS3DCorrFctn.h:24
 AliFemtoBPLCMS3DCorrFctn.h:25
 AliFemtoBPLCMS3DCorrFctn.h:26
 AliFemtoBPLCMS3DCorrFctn.h:27
 AliFemtoBPLCMS3DCorrFctn.h:28
 AliFemtoBPLCMS3DCorrFctn.h:29
 AliFemtoBPLCMS3DCorrFctn.h:30
 AliFemtoBPLCMS3DCorrFctn.h:31
 AliFemtoBPLCMS3DCorrFctn.h:32
 AliFemtoBPLCMS3DCorrFctn.h:33
 AliFemtoBPLCMS3DCorrFctn.h:34
 AliFemtoBPLCMS3DCorrFctn.h:35
 AliFemtoBPLCMS3DCorrFctn.h:36
 AliFemtoBPLCMS3DCorrFctn.h:37
 AliFemtoBPLCMS3DCorrFctn.h:38
 AliFemtoBPLCMS3DCorrFctn.h:39
 AliFemtoBPLCMS3DCorrFctn.h:40
 AliFemtoBPLCMS3DCorrFctn.h:41
 AliFemtoBPLCMS3DCorrFctn.h:42
 AliFemtoBPLCMS3DCorrFctn.h:43
 AliFemtoBPLCMS3DCorrFctn.h:44
 AliFemtoBPLCMS3DCorrFctn.h:45
 AliFemtoBPLCMS3DCorrFctn.h:46
 AliFemtoBPLCMS3DCorrFctn.h:47
 AliFemtoBPLCMS3DCorrFctn.h:48
 AliFemtoBPLCMS3DCorrFctn.h:49
 AliFemtoBPLCMS3DCorrFctn.h:50
 AliFemtoBPLCMS3DCorrFctn.h:51
 AliFemtoBPLCMS3DCorrFctn.h:52
 AliFemtoBPLCMS3DCorrFctn.h:53
 AliFemtoBPLCMS3DCorrFctn.h:54
 AliFemtoBPLCMS3DCorrFctn.h:55
 AliFemtoBPLCMS3DCorrFctn.h:56
 AliFemtoBPLCMS3DCorrFctn.h:57
 AliFemtoBPLCMS3DCorrFctn.h:58
 AliFemtoBPLCMS3DCorrFctn.h:59
 AliFemtoBPLCMS3DCorrFctn.h:60
 AliFemtoBPLCMS3DCorrFctn.h:61
 AliFemtoBPLCMS3DCorrFctn.h:62
 AliFemtoBPLCMS3DCorrFctn.h:63
 AliFemtoBPLCMS3DCorrFctn.h:64
 AliFemtoBPLCMS3DCorrFctn.h:65
 AliFemtoBPLCMS3DCorrFctn.h:66
 AliFemtoBPLCMS3DCorrFctn.h:67
 AliFemtoBPLCMS3DCorrFctn.h:68
 AliFemtoBPLCMS3DCorrFctn.h:69
 AliFemtoBPLCMS3DCorrFctn.h:70
 AliFemtoBPLCMS3DCorrFctn.h:71
 AliFemtoBPLCMS3DCorrFctn.h:72
 AliFemtoBPLCMS3DCorrFctn.h:73
 AliFemtoBPLCMS3DCorrFctn.h:74
 AliFemtoBPLCMS3DCorrFctn.h:75
 AliFemtoBPLCMS3DCorrFctn.h:76
 AliFemtoBPLCMS3DCorrFctn.h:77
 AliFemtoBPLCMS3DCorrFctn.h:78
 AliFemtoBPLCMS3DCorrFctn.h:79
 AliFemtoBPLCMS3DCorrFctn.h:80
 AliFemtoBPLCMS3DCorrFctn.h:81
 AliFemtoBPLCMS3DCorrFctn.h:82
 AliFemtoBPLCMS3DCorrFctn.h:83
 AliFemtoBPLCMS3DCorrFctn.h:84
 AliFemtoBPLCMS3DCorrFctn.h:85
 AliFemtoBPLCMS3DCorrFctn.h:86
 AliFemtoBPLCMS3DCorrFctn.h:87
 AliFemtoBPLCMS3DCorrFctn.h:88
 AliFemtoBPLCMS3DCorrFctn.h:89
 AliFemtoBPLCMS3DCorrFctn.h:90
 AliFemtoBPLCMS3DCorrFctn.h:91
 AliFemtoBPLCMS3DCorrFctn.h:92
 AliFemtoBPLCMS3DCorrFctn.h:93
 AliFemtoBPLCMS3DCorrFctn.h:94
 AliFemtoBPLCMS3DCorrFctn.h:95
 AliFemtoBPLCMS3DCorrFctn.h:96
 AliFemtoBPLCMS3DCorrFctn.h:97
 AliFemtoBPLCMS3DCorrFctn.h:98
 AliFemtoBPLCMS3DCorrFctn.h:99
 AliFemtoBPLCMS3DCorrFctn.h:100
 AliFemtoBPLCMS3DCorrFctn.h:101
 AliFemtoBPLCMS3DCorrFctn.h:102
 AliFemtoBPLCMS3DCorrFctn.h:103
 AliFemtoBPLCMS3DCorrFctn.h:104
 AliFemtoBPLCMS3DCorrFctn.h:105
 AliFemtoBPLCMS3DCorrFctn.h:106
 AliFemtoBPLCMS3DCorrFctn.h:107
 AliFemtoBPLCMS3DCorrFctn.h:108
 AliFemtoBPLCMS3DCorrFctn.h:109
 AliFemtoBPLCMS3DCorrFctn.h:110
 AliFemtoBPLCMS3DCorrFctn.h:111
 AliFemtoBPLCMS3DCorrFctn.h:112
 AliFemtoBPLCMS3DCorrFctn.h:113
 AliFemtoBPLCMS3DCorrFctn.h:114
 AliFemtoBPLCMS3DCorrFctn.h:115
 AliFemtoBPLCMS3DCorrFctn.h:116
 AliFemtoBPLCMS3DCorrFctn.h:117
 AliFemtoBPLCMS3DCorrFctn.h:118
 AliFemtoBPLCMS3DCorrFctn.h:119
 AliFemtoBPLCMS3DCorrFctn.h:120
 AliFemtoBPLCMS3DCorrFctn.h:121