ROOT logo
///////////////////////////////////////////////////////////////////////////
//                                                                       //
// AliFemtoCorrFctn3DLCMSSym: a class to calculate 3D correlation        //
// for pairs of identical particles.                                     //
// In analysis the function should be first created in a macro, then     //
// added to the analysis, and at the end of the macro the procedure to   //
// write out histograms should be called.                                //
//                                                                       //
///////////////////////////////////////////////////////////////////////////

#include "AliFemtoCorrFctn3DLCMSSym.h"

#include <cstdio>

#ifdef __ROOT__
ClassImp(AliFemtoCorrFctn3DLCMSSym)
#endif

//____________________________
AliFemtoCorrFctn3DLCMSSym::AliFemtoCorrFctn3DLCMSSym(char* title, const int& nbins, const float& QHi)
:
AliFemtoCorrFctn(),
  fNumerator(0),
  fDenominator(0),
  fNumeratorW(0),
  fDenominatorW(0),
  fUseLCMS(1)
{
  // Basic constructor

  // set up numerator
  char tTitNum[101] = "Num";
  strncat(tTitNum,title, 100);
  fNumerator = new TH3F(tTitNum,title,nbins,-QHi,QHi,nbins,-QHi,QHi,nbins,-QHi,QHi);
  // set up denominator
  char tTitDen[101] = "Den";
  strncat(tTitDen,title, 100);
  fDenominator = new TH3F(tTitDen,title,nbins,-QHi,QHi,nbins,-QHi,QHi,nbins,-QHi,QHi);
//Weighted by qinv histos
  // set up numerator
  char tTitNumW[101] = "NumWqinv";
  strncat(tTitNumW,title, 100);
  fNumeratorW = new TH3F(tTitNumW,title,nbins,-QHi,QHi,nbins,-QHi,QHi,nbins,-QHi,QHi);
  // set up denominator
  char tTitDenW[101] = "DenWqinv";
  strncat(tTitDenW,title, 100);
  fDenominatorW = new TH3F(tTitDenW,title,nbins,-QHi,QHi,nbins,-QHi,QHi,nbins,-QHi,QHi);

  // to enable error bar calculation...
  fNumerator->Sumw2();
  fDenominator->Sumw2();
  fNumeratorW->Sumw2();
  fDenominatorW->Sumw2();
}

AliFemtoCorrFctn3DLCMSSym::AliFemtoCorrFctn3DLCMSSym(const AliFemtoCorrFctn3DLCMSSym& aCorrFctn) :
  AliFemtoCorrFctn(aCorrFctn),
  fNumerator(0),
  fDenominator(0),
  fNumeratorW(0),
  fDenominatorW(0),
  fUseLCMS(1)
{
  // Copy constructor
  fNumerator = new TH3F(*aCorrFctn.fNumerator);
  fDenominator = new TH3F(*aCorrFctn.fDenominator);
  fNumeratorW = new TH3F(*aCorrFctn.fNumeratorW);
  fDenominatorW = new TH3F(*aCorrFctn.fDenominatorW);
  fUseLCMS = aCorrFctn.fUseLCMS;
}
//____________________________
AliFemtoCorrFctn3DLCMSSym::~AliFemtoCorrFctn3DLCMSSym(){
  // Destructor
  delete fNumerator;
  delete fDenominator;
  delete fNumeratorW;
  delete fDenominatorW;
}
//_________________________
AliFemtoCorrFctn3DLCMSSym& AliFemtoCorrFctn3DLCMSSym::operator=(const AliFemtoCorrFctn3DLCMSSym& aCorrFctn)
{
  // assignment operator
  if (this == &aCorrFctn)
    return *this;

  if (fNumerator) delete fNumerator;
  fNumerator = new TH3F(*aCorrFctn.fNumerator);
  if (fDenominator) delete fDenominator;
  fDenominator = new TH3F(*aCorrFctn.fDenominator);
  if (fNumeratorW) delete fNumeratorW;
  fNumeratorW = new TH3F(*aCorrFctn.fNumeratorW);
  if (fDenominatorW) delete fDenominatorW;
  fDenominatorW = new TH3F(*aCorrFctn.fDenominatorW);
  fUseLCMS = aCorrFctn.fUseLCMS;
  return *this;
}

//_________________________
void AliFemtoCorrFctn3DLCMSSym::WriteOutHistos(){
  // Write out all histograms to file
  fNumerator->Write();
  fDenominator->Write();
  fNumeratorW->Write();
  fDenominatorW->Write();
}
//______________________________
TList* AliFemtoCorrFctn3DLCMSSym::GetOutputList()
{
  // Prepare the list of objects to be written to the output
  TList *tOutputList = new TList();

  tOutputList->Add(fNumerator);
  tOutputList->Add(fDenominator);
  tOutputList->Add(fNumeratorW);
  tOutputList->Add(fDenominatorW);

  return tOutputList;
}

//_________________________
void AliFemtoCorrFctn3DLCMSSym::Finish(){
  // here is where we should normalize, fit, etc...

}

//____________________________
AliFemtoString AliFemtoCorrFctn3DLCMSSym::Report(){
  // Construct the report
  string stemp = "LCMS Frame Bertsch-Pratt 3D Correlation Function Report:\n";
  char ctemp[100];
  snprintf(ctemp , 100, "Number of entries in numerator:\t%E\n",fNumerator->GetEntries());
  stemp += ctemp;
  snprintf(ctemp , 100, "Number of entries in denominator:\t%E\n",fDenominator->GetEntries());
  stemp += ctemp;

  if (fPairCut){
    snprintf(ctemp , 100, "Here is the PairCut specific to this CorrFctn\n");
    stemp += ctemp;
    stemp += fPairCut->Report();
  }
  else{
    snprintf(ctemp , 100, "No PairCut specific to this CorrFctn\n");
    stemp += ctemp;
  }

  //
  AliFemtoString returnThis = stemp;
  return returnThis;
}
//____________________________
void AliFemtoCorrFctn3DLCMSSym::AddRealPair( AliFemtoPair* pair){
  // perform operations on real pairs
  if (fPairCut){
    if (!(fPairCut->Pass(pair))) return;
  }

  if (fUseLCMS) {
    fNumerator->Fill(pair->QOutCMS(),pair->QSideCMS(),pair->QLongCMS());
    fNumeratorW->Fill(pair->QOutCMS(),pair->QSideCMS(),pair->QLongCMS(),pair->QInv());
  }
  else {
    fNumerator->Fill(pair->QOutPf(),pair->QSidePf(),pair->QLongPf());
    fNumeratorW->Fill(pair->QOutPf(),pair->QSidePf(),pair->QLongPf(),pair->QInv());
  }
}
//____________________________
void AliFemtoCorrFctn3DLCMSSym::AddMixedPair( AliFemtoPair* pair){
  // perform operations on mixed pairs
  if (fPairCut){
    if (!(fPairCut->Pass(pair))) return;
  }

  if (fUseLCMS) {
    fDenominator->Fill(pair->QOutCMS(),pair->QSideCMS(),pair->QLongCMS(),1.0);
    fDenominatorW->Fill(pair->QOutCMS(),pair->QSideCMS(),pair->QLongCMS(),pair->QInv());
  }
  else {
    fDenominator->Fill(pair->QOutPf(),pair->QSidePf(),pair->QLongPf(),1.0);
    fDenominatorW->Fill(pair->QOutPf(),pair->QSidePf(),pair->QLongPf(),pair->QInv());
  }



}

void AliFemtoCorrFctn3DLCMSSym::SetUseLCMS(int aUseLCMS)
{
  fUseLCMS = aUseLCMS;
}

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