ROOT logo
////////////////////////////////////////////////////////////////////////////////
//                                                                            //
// AliFemtoGammaMonitor - A correlation function that analyzes            //
// two particle correlations with respect to the azimuthal angle (phi)        //
// and pseudorapidity (eta) difference                                        //
//                                                                            //
// Authors: Adam Kisiel Adam.Kisiel@cern.ch                                   //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////

#include "AliFemtoCorrFctnGammaMonitor.h"
//#include "AliFemtoHisto.hh"
#include <cstdio>
#include <TMath.h>

#ifdef __ROOT__ 
ClassImp(AliFemtoCorrFctnGammaMonitor)
#endif

//____________________________
AliFemtoCorrFctnGammaMonitor::AliFemtoCorrFctnGammaMonitor(char* title, const int& aMinvBins=20, const int& aDThetaBins=20):
  AliFemtoCorrFctn(),
  fNumPMinvDTheta(0),
  fDenPMinvDTheta(0),
  fNumNMinvDTheta(0),
  fDenNMinvDTheta(0)
{
  // set up numerator
  char tTitNumD[101] = "NumPMinvTheta";
  strncat(tTitNumD,title, 100);
  fNumPMinvDTheta = new TH2D(tTitNumD,title,aMinvBins,0.0,0.2,aDThetaBins,0.0,0.2);
  // set up denominator
  char tTitDenD[101] = "DenPMinvTheta";
  strncat(tTitDenD,title, 100);
  fDenPMinvDTheta = new TH2D(tTitDenD,title,aMinvBins,0.0,0.2,aDThetaBins,0.0,0.2);

  // set up numerator
  char tTitNumR[101] = "NumNMinvTheta";
  strncat(tTitNumR,title, 100);
  fNumNMinvDTheta = new TH2D(tTitNumR,title,aMinvBins,0.0,0.2,aDThetaBins,0.0,0.2);
  // set up denominator
  char tTitDenR[101] = "DenNMinvTheta";
  strncat(tTitDenR,title, 100);
  fDenNMinvDTheta = new TH2D(tTitDenR,title,aMinvBins,0.0,0.2,aDThetaBins,0.0,0.2);

  // to enable error bar calculation...
  fNumPMinvDTheta->Sumw2();
  fDenPMinvDTheta->Sumw2();
  fNumNMinvDTheta->Sumw2();
  fDenNMinvDTheta->Sumw2();
}

//____________________________
AliFemtoCorrFctnGammaMonitor::AliFemtoCorrFctnGammaMonitor(const AliFemtoCorrFctnGammaMonitor& aCorrFctn) :
  AliFemtoCorrFctn(),
  fNumPMinvDTheta(0),
  fDenPMinvDTheta(0),
  fNumNMinvDTheta(0),
  fDenNMinvDTheta(0)
{
  // copy constructor
  if (aCorrFctn.fNumPMinvDTheta)
    fNumPMinvDTheta = new TH2D(*aCorrFctn.fNumPMinvDTheta);
  else
    fNumPMinvDTheta = 0;
  if (aCorrFctn.fDenPMinvDTheta)
    fDenPMinvDTheta = new TH2D(*aCorrFctn.fDenPMinvDTheta);
  else
    fDenPMinvDTheta = 0;

  if (aCorrFctn.fNumNMinvDTheta)
    fNumNMinvDTheta = new TH2D(*aCorrFctn.fNumNMinvDTheta);
  else
    fNumNMinvDTheta = 0;
  if (aCorrFctn.fDenNMinvDTheta)
    fDenNMinvDTheta = new TH2D(*aCorrFctn.fDenNMinvDTheta);
  else
    fDenNMinvDTheta = 0;

}
//____________________________
AliFemtoCorrFctnGammaMonitor::~AliFemtoCorrFctnGammaMonitor(){
  // destructor
  delete fNumPMinvDTheta;
  delete fDenPMinvDTheta;
  delete fNumNMinvDTheta;
  delete fDenNMinvDTheta;
}
//_________________________
AliFemtoCorrFctnGammaMonitor& AliFemtoCorrFctnGammaMonitor::operator=(const AliFemtoCorrFctnGammaMonitor& aCorrFctn)
{
  // assignment operator
  if (this == &aCorrFctn)
    return *this;

  if (aCorrFctn.fNumPMinvDTheta)
    fNumPMinvDTheta = new TH2D(*aCorrFctn.fNumPMinvDTheta);
  else
    fNumPMinvDTheta = 0;
  if (aCorrFctn.fDenPMinvDTheta)
    fDenPMinvDTheta = new TH2D(*aCorrFctn.fDenPMinvDTheta);
  else
    fDenPMinvDTheta = 0;

  if (aCorrFctn.fNumNMinvDTheta)
    fNumNMinvDTheta = new TH2D(*aCorrFctn.fNumNMinvDTheta);
  else
    fNumNMinvDTheta = 0;
  if (aCorrFctn.fDenNMinvDTheta)
    fDenNMinvDTheta = new TH2D(*aCorrFctn.fDenNMinvDTheta);
  else
    fDenNMinvDTheta = 0;


  return *this;
}
//_________________________
void AliFemtoCorrFctnGammaMonitor::Finish(){
  // here is where we should normalize, fit, etc...
  // we should NOT Draw() the histos (as I had done it below),
  // since we want to insulate ourselves from root at this level
  // of the code.  Do it instead at root command line with browser.
  //  mShareNumerator->Draw();
  //mShareDenominator->Draw();
  //mRatio->Draw();

}

//____________________________
AliFemtoString AliFemtoCorrFctnGammaMonitor::Report(){
  // create report
  string stemp = "Gamma Monitor Function Report:\n";
  char ctemp[100];
  snprintf(ctemp , 100, "Number of entries in numerator:\t%E\n",fNumPMinvDTheta->GetEntries());
  stemp += ctemp;
  snprintf(ctemp , 100, "Number of entries in denominator:\t%E\n",fDenPMinvDTheta->GetEntries());
  stemp += ctemp;
  //  stemp += mCoulombWeight->Report();
  AliFemtoString returnThis = stemp;
  return returnThis;
}
//____________________________
void AliFemtoCorrFctnGammaMonitor::AddRealPair( AliFemtoPair* pair){
  // add real (effect) pair
  double me = 0.000511;

  double theta1 = pair->Track1()->Track()->P().Theta();
  double theta2 = pair->Track2()->Track()->P().Theta();
  double dtheta = TMath::Abs(theta1 - theta2);

  double e1 = TMath::Sqrt(me*me + pair->Track1()->Track()->P().Mag2());
  double e2 = TMath::Sqrt(me*me + pair->Track2()->Track()->P().Mag2());

  double minv = 2*me*me + 2*(e1*e2 - 
			     pair->Track1()->Track()->P().x()*pair->Track2()->Track()->P().x() -
			     pair->Track1()->Track()->P().y()*pair->Track2()->Track()->P().y() -
			     pair->Track1()->Track()->P().z()*pair->Track2()->Track()->P().z());

  if (pair->KSide()>0.0) 
    fNumPMinvDTheta->Fill(minv, dtheta);
  else
    fNumNMinvDTheta->Fill(minv, dtheta);
}
//____________________________
void AliFemtoCorrFctnGammaMonitor::AddMixedPair( AliFemtoPair* pair){
  // add mixed (background) pair
  double me = 0.000511;

  double theta1 = pair->Track1()->Track()->P().Theta();
  double theta2 = pair->Track2()->Track()->P().Theta();
  double dtheta = TMath::Abs(theta1 - theta2);

  double e1 = TMath::Sqrt(me*me + pair->Track1()->Track()->P().Mag2());
  double e2 = TMath::Sqrt(me*me + pair->Track2()->Track()->P().Mag2());

  double minv = 2*me*me + 2*(e1*e2 - 
			     pair->Track1()->Track()->P().x()*pair->Track2()->Track()->P().x() -
			     pair->Track1()->Track()->P().y()*pair->Track2()->Track()->P().y() -
			     pair->Track1()->Track()->P().z()*pair->Track2()->Track()->P().z());

  if (pair->KSide()>0.0) 
    fDenPMinvDTheta->Fill(minv, dtheta);
  else
    fDenNMinvDTheta->Fill(minv, dtheta);
}


void AliFemtoCorrFctnGammaMonitor::WriteHistos()
{
  // Write out result histograms
  fNumPMinvDTheta->Write();
  fDenPMinvDTheta->Write();
  fNumNMinvDTheta->Write();
  fDenNMinvDTheta->Write();
}

TList* AliFemtoCorrFctnGammaMonitor::GetOutputList()
{
  // Prepare the list of objects to be written to the output
  TList *tOutputList = new TList();

  tOutputList->Add(fNumPMinvDTheta);
  tOutputList->Add(fDenPMinvDTheta);
  tOutputList->Add(fNumNMinvDTheta);
  tOutputList->Add(fDenNMinvDTheta);

  return tOutputList;
}
 AliFemtoCorrFctnGammaMonitor.cxx:1
 AliFemtoCorrFctnGammaMonitor.cxx:2
 AliFemtoCorrFctnGammaMonitor.cxx:3
 AliFemtoCorrFctnGammaMonitor.cxx:4
 AliFemtoCorrFctnGammaMonitor.cxx:5
 AliFemtoCorrFctnGammaMonitor.cxx:6
 AliFemtoCorrFctnGammaMonitor.cxx:7
 AliFemtoCorrFctnGammaMonitor.cxx:8
 AliFemtoCorrFctnGammaMonitor.cxx:9
 AliFemtoCorrFctnGammaMonitor.cxx:10
 AliFemtoCorrFctnGammaMonitor.cxx:11
 AliFemtoCorrFctnGammaMonitor.cxx:12
 AliFemtoCorrFctnGammaMonitor.cxx:13
 AliFemtoCorrFctnGammaMonitor.cxx:14
 AliFemtoCorrFctnGammaMonitor.cxx:15
 AliFemtoCorrFctnGammaMonitor.cxx:16
 AliFemtoCorrFctnGammaMonitor.cxx:17
 AliFemtoCorrFctnGammaMonitor.cxx:18
 AliFemtoCorrFctnGammaMonitor.cxx:19
 AliFemtoCorrFctnGammaMonitor.cxx:20
 AliFemtoCorrFctnGammaMonitor.cxx:21
 AliFemtoCorrFctnGammaMonitor.cxx:22
 AliFemtoCorrFctnGammaMonitor.cxx:23
 AliFemtoCorrFctnGammaMonitor.cxx:24
 AliFemtoCorrFctnGammaMonitor.cxx:25
 AliFemtoCorrFctnGammaMonitor.cxx:26
 AliFemtoCorrFctnGammaMonitor.cxx:27
 AliFemtoCorrFctnGammaMonitor.cxx:28
 AliFemtoCorrFctnGammaMonitor.cxx:29
 AliFemtoCorrFctnGammaMonitor.cxx:30
 AliFemtoCorrFctnGammaMonitor.cxx:31
 AliFemtoCorrFctnGammaMonitor.cxx:32
 AliFemtoCorrFctnGammaMonitor.cxx:33
 AliFemtoCorrFctnGammaMonitor.cxx:34
 AliFemtoCorrFctnGammaMonitor.cxx:35
 AliFemtoCorrFctnGammaMonitor.cxx:36
 AliFemtoCorrFctnGammaMonitor.cxx:37
 AliFemtoCorrFctnGammaMonitor.cxx:38
 AliFemtoCorrFctnGammaMonitor.cxx:39
 AliFemtoCorrFctnGammaMonitor.cxx:40
 AliFemtoCorrFctnGammaMonitor.cxx:41
 AliFemtoCorrFctnGammaMonitor.cxx:42
 AliFemtoCorrFctnGammaMonitor.cxx:43
 AliFemtoCorrFctnGammaMonitor.cxx:44
 AliFemtoCorrFctnGammaMonitor.cxx:45
 AliFemtoCorrFctnGammaMonitor.cxx:46
 AliFemtoCorrFctnGammaMonitor.cxx:47
 AliFemtoCorrFctnGammaMonitor.cxx:48
 AliFemtoCorrFctnGammaMonitor.cxx:49
 AliFemtoCorrFctnGammaMonitor.cxx:50
 AliFemtoCorrFctnGammaMonitor.cxx:51
 AliFemtoCorrFctnGammaMonitor.cxx:52
 AliFemtoCorrFctnGammaMonitor.cxx:53
 AliFemtoCorrFctnGammaMonitor.cxx:54
 AliFemtoCorrFctnGammaMonitor.cxx:55
 AliFemtoCorrFctnGammaMonitor.cxx:56
 AliFemtoCorrFctnGammaMonitor.cxx:57
 AliFemtoCorrFctnGammaMonitor.cxx:58
 AliFemtoCorrFctnGammaMonitor.cxx:59
 AliFemtoCorrFctnGammaMonitor.cxx:60
 AliFemtoCorrFctnGammaMonitor.cxx:61
 AliFemtoCorrFctnGammaMonitor.cxx:62
 AliFemtoCorrFctnGammaMonitor.cxx:63
 AliFemtoCorrFctnGammaMonitor.cxx:64
 AliFemtoCorrFctnGammaMonitor.cxx:65
 AliFemtoCorrFctnGammaMonitor.cxx:66
 AliFemtoCorrFctnGammaMonitor.cxx:67
 AliFemtoCorrFctnGammaMonitor.cxx:68
 AliFemtoCorrFctnGammaMonitor.cxx:69
 AliFemtoCorrFctnGammaMonitor.cxx:70
 AliFemtoCorrFctnGammaMonitor.cxx:71
 AliFemtoCorrFctnGammaMonitor.cxx:72
 AliFemtoCorrFctnGammaMonitor.cxx:73
 AliFemtoCorrFctnGammaMonitor.cxx:74
 AliFemtoCorrFctnGammaMonitor.cxx:75
 AliFemtoCorrFctnGammaMonitor.cxx:76
 AliFemtoCorrFctnGammaMonitor.cxx:77
 AliFemtoCorrFctnGammaMonitor.cxx:78
 AliFemtoCorrFctnGammaMonitor.cxx:79
 AliFemtoCorrFctnGammaMonitor.cxx:80
 AliFemtoCorrFctnGammaMonitor.cxx:81
 AliFemtoCorrFctnGammaMonitor.cxx:82
 AliFemtoCorrFctnGammaMonitor.cxx:83
 AliFemtoCorrFctnGammaMonitor.cxx:84
 AliFemtoCorrFctnGammaMonitor.cxx:85
 AliFemtoCorrFctnGammaMonitor.cxx:86
 AliFemtoCorrFctnGammaMonitor.cxx:87
 AliFemtoCorrFctnGammaMonitor.cxx:88
 AliFemtoCorrFctnGammaMonitor.cxx:89
 AliFemtoCorrFctnGammaMonitor.cxx:90
 AliFemtoCorrFctnGammaMonitor.cxx:91
 AliFemtoCorrFctnGammaMonitor.cxx:92
 AliFemtoCorrFctnGammaMonitor.cxx:93
 AliFemtoCorrFctnGammaMonitor.cxx:94
 AliFemtoCorrFctnGammaMonitor.cxx:95
 AliFemtoCorrFctnGammaMonitor.cxx:96
 AliFemtoCorrFctnGammaMonitor.cxx:97
 AliFemtoCorrFctnGammaMonitor.cxx:98
 AliFemtoCorrFctnGammaMonitor.cxx:99
 AliFemtoCorrFctnGammaMonitor.cxx:100
 AliFemtoCorrFctnGammaMonitor.cxx:101
 AliFemtoCorrFctnGammaMonitor.cxx:102
 AliFemtoCorrFctnGammaMonitor.cxx:103
 AliFemtoCorrFctnGammaMonitor.cxx:104
 AliFemtoCorrFctnGammaMonitor.cxx:105
 AliFemtoCorrFctnGammaMonitor.cxx:106
 AliFemtoCorrFctnGammaMonitor.cxx:107
 AliFemtoCorrFctnGammaMonitor.cxx:108
 AliFemtoCorrFctnGammaMonitor.cxx:109
 AliFemtoCorrFctnGammaMonitor.cxx:110
 AliFemtoCorrFctnGammaMonitor.cxx:111
 AliFemtoCorrFctnGammaMonitor.cxx:112
 AliFemtoCorrFctnGammaMonitor.cxx:113
 AliFemtoCorrFctnGammaMonitor.cxx:114
 AliFemtoCorrFctnGammaMonitor.cxx:115
 AliFemtoCorrFctnGammaMonitor.cxx:116
 AliFemtoCorrFctnGammaMonitor.cxx:117
 AliFemtoCorrFctnGammaMonitor.cxx:118
 AliFemtoCorrFctnGammaMonitor.cxx:119
 AliFemtoCorrFctnGammaMonitor.cxx:120
 AliFemtoCorrFctnGammaMonitor.cxx:121
 AliFemtoCorrFctnGammaMonitor.cxx:122
 AliFemtoCorrFctnGammaMonitor.cxx:123
 AliFemtoCorrFctnGammaMonitor.cxx:124
 AliFemtoCorrFctnGammaMonitor.cxx:125
 AliFemtoCorrFctnGammaMonitor.cxx:126
 AliFemtoCorrFctnGammaMonitor.cxx:127
 AliFemtoCorrFctnGammaMonitor.cxx:128
 AliFemtoCorrFctnGammaMonitor.cxx:129
 AliFemtoCorrFctnGammaMonitor.cxx:130
 AliFemtoCorrFctnGammaMonitor.cxx:131
 AliFemtoCorrFctnGammaMonitor.cxx:132
 AliFemtoCorrFctnGammaMonitor.cxx:133
 AliFemtoCorrFctnGammaMonitor.cxx:134
 AliFemtoCorrFctnGammaMonitor.cxx:135
 AliFemtoCorrFctnGammaMonitor.cxx:136
 AliFemtoCorrFctnGammaMonitor.cxx:137
 AliFemtoCorrFctnGammaMonitor.cxx:138
 AliFemtoCorrFctnGammaMonitor.cxx:139
 AliFemtoCorrFctnGammaMonitor.cxx:140
 AliFemtoCorrFctnGammaMonitor.cxx:141
 AliFemtoCorrFctnGammaMonitor.cxx:142
 AliFemtoCorrFctnGammaMonitor.cxx:143
 AliFemtoCorrFctnGammaMonitor.cxx:144
 AliFemtoCorrFctnGammaMonitor.cxx:145
 AliFemtoCorrFctnGammaMonitor.cxx:146
 AliFemtoCorrFctnGammaMonitor.cxx:147
 AliFemtoCorrFctnGammaMonitor.cxx:148
 AliFemtoCorrFctnGammaMonitor.cxx:149
 AliFemtoCorrFctnGammaMonitor.cxx:150
 AliFemtoCorrFctnGammaMonitor.cxx:151
 AliFemtoCorrFctnGammaMonitor.cxx:152
 AliFemtoCorrFctnGammaMonitor.cxx:153
 AliFemtoCorrFctnGammaMonitor.cxx:154
 AliFemtoCorrFctnGammaMonitor.cxx:155
 AliFemtoCorrFctnGammaMonitor.cxx:156
 AliFemtoCorrFctnGammaMonitor.cxx:157
 AliFemtoCorrFctnGammaMonitor.cxx:158
 AliFemtoCorrFctnGammaMonitor.cxx:159
 AliFemtoCorrFctnGammaMonitor.cxx:160
 AliFemtoCorrFctnGammaMonitor.cxx:161
 AliFemtoCorrFctnGammaMonitor.cxx:162
 AliFemtoCorrFctnGammaMonitor.cxx:163
 AliFemtoCorrFctnGammaMonitor.cxx:164
 AliFemtoCorrFctnGammaMonitor.cxx:165
 AliFemtoCorrFctnGammaMonitor.cxx:166
 AliFemtoCorrFctnGammaMonitor.cxx:167
 AliFemtoCorrFctnGammaMonitor.cxx:168
 AliFemtoCorrFctnGammaMonitor.cxx:169
 AliFemtoCorrFctnGammaMonitor.cxx:170
 AliFemtoCorrFctnGammaMonitor.cxx:171
 AliFemtoCorrFctnGammaMonitor.cxx:172
 AliFemtoCorrFctnGammaMonitor.cxx:173
 AliFemtoCorrFctnGammaMonitor.cxx:174
 AliFemtoCorrFctnGammaMonitor.cxx:175
 AliFemtoCorrFctnGammaMonitor.cxx:176
 AliFemtoCorrFctnGammaMonitor.cxx:177
 AliFemtoCorrFctnGammaMonitor.cxx:178
 AliFemtoCorrFctnGammaMonitor.cxx:179
 AliFemtoCorrFctnGammaMonitor.cxx:180
 AliFemtoCorrFctnGammaMonitor.cxx:181
 AliFemtoCorrFctnGammaMonitor.cxx:182
 AliFemtoCorrFctnGammaMonitor.cxx:183
 AliFemtoCorrFctnGammaMonitor.cxx:184
 AliFemtoCorrFctnGammaMonitor.cxx:185
 AliFemtoCorrFctnGammaMonitor.cxx:186
 AliFemtoCorrFctnGammaMonitor.cxx:187
 AliFemtoCorrFctnGammaMonitor.cxx:188
 AliFemtoCorrFctnGammaMonitor.cxx:189
 AliFemtoCorrFctnGammaMonitor.cxx:190
 AliFemtoCorrFctnGammaMonitor.cxx:191
 AliFemtoCorrFctnGammaMonitor.cxx:192
 AliFemtoCorrFctnGammaMonitor.cxx:193
 AliFemtoCorrFctnGammaMonitor.cxx:194
 AliFemtoCorrFctnGammaMonitor.cxx:195
 AliFemtoCorrFctnGammaMonitor.cxx:196
 AliFemtoCorrFctnGammaMonitor.cxx:197
 AliFemtoCorrFctnGammaMonitor.cxx:198
 AliFemtoCorrFctnGammaMonitor.cxx:199
 AliFemtoCorrFctnGammaMonitor.cxx:200
 AliFemtoCorrFctnGammaMonitor.cxx:201
 AliFemtoCorrFctnGammaMonitor.cxx:202
 AliFemtoCorrFctnGammaMonitor.cxx:203
 AliFemtoCorrFctnGammaMonitor.cxx:204
 AliFemtoCorrFctnGammaMonitor.cxx:205
 AliFemtoCorrFctnGammaMonitor.cxx:206
 AliFemtoCorrFctnGammaMonitor.cxx:207
 AliFemtoCorrFctnGammaMonitor.cxx:208