ROOT logo
////////////////////////////////////////////////////////////////////////////////
//                                                                            //
// AliFemtoCorrFctnTPCNcls - A correlation function that saves the correlation//
// function as a function of number of TPC clusters of the track              //
//                                                                            //
// Authors: Adam Kisiel kisiel@mps.ohio-state.edu                             //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////

#include "AliFemtoCorrFctnTPCNcls.h"
//#include "AliFemtoHisto.hh"
#include <cstdio>

#ifdef __ROOT__ 
ClassImp(AliFemtoCorrFctnTPCNcls)
#endif

//____________________________
AliFemtoCorrFctnTPCNcls::AliFemtoCorrFctnTPCNcls(char* title, const int& nbins, const float& QinvLo, const float& QinvHi):
  AliFemtoCorrFctn(),
  fNclsTPCMinNumerator(0),
  fNclsTPCMinDenominator(0)
{
  // set up numerator
  char tTitNum[101] = "NumNclsTPCMin";
  strncat(tTitNum,title, 100);
  fNclsTPCMinNumerator = new TH2D(tTitNum,title,nbins,QinvLo,QinvHi,159,0.5,159.5);
  // set up denominator
  char tTitDen[101] = "DenNclsTPCMin";
  strncat(tTitDen,title, 100);
  fNclsTPCMinDenominator = new TH2D(tTitDen,title,nbins,QinvLo,QinvHi,159,0.5,159.5);

  // to enable error bar calculation...
  fNclsTPCMinNumerator->Sumw2();
  fNclsTPCMinDenominator->Sumw2();
}

//____________________________
AliFemtoCorrFctnTPCNcls::AliFemtoCorrFctnTPCNcls(const AliFemtoCorrFctnTPCNcls& aCorrFctn) :
  AliFemtoCorrFctn(),
  fNclsTPCMinNumerator(0),
  fNclsTPCMinDenominator(0)
{
  // copy constructor
  if (aCorrFctn.fNclsTPCMinNumerator)
    fNclsTPCMinNumerator = new TH2D(*aCorrFctn.fNclsTPCMinNumerator);
  if (aCorrFctn.fNclsTPCMinDenominator)
    fNclsTPCMinDenominator = new TH2D(*aCorrFctn.fNclsTPCMinDenominator);
}
//____________________________
AliFemtoCorrFctnTPCNcls::~AliFemtoCorrFctnTPCNcls(){
  // destructor
  delete fNclsTPCMinNumerator;
  delete fNclsTPCMinDenominator;
}
//_________________________
AliFemtoCorrFctnTPCNcls& AliFemtoCorrFctnTPCNcls::operator=(const AliFemtoCorrFctnTPCNcls& aCorrFctn)
{
  // assignment operator
  if (this == &aCorrFctn)
    return *this;

  if (aCorrFctn.fNclsTPCMinNumerator)
    fNclsTPCMinNumerator = new TH2D(*aCorrFctn.fNclsTPCMinNumerator);
  else
    fNclsTPCMinNumerator = 0;
  if (aCorrFctn.fNclsTPCMinDenominator)
    fNclsTPCMinDenominator = new TH2D(*aCorrFctn.fNclsTPCMinDenominator);
  else
    fNclsTPCMinDenominator = 0;

  return *this;
}
//_________________________
void AliFemtoCorrFctnTPCNcls::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 AliFemtoCorrFctnTPCNcls::Report(){
  // create report
  string stemp = "TPC Ncls Correlation Function Report:\n";
  char ctemp[100];
  snprintf(ctemp , 100, "Number of entries in numerator:\t%E\n",fNclsTPCMinNumerator->GetEntries());
  stemp += ctemp;
  snprintf(ctemp , 100, "Number of entries in denominator:\t%E\n",fNclsTPCMinDenominator->GetEntries());
  stemp += ctemp;
  //  stemp += mCoulombWeight->Report();
  AliFemtoString returnThis = stemp;
  return returnThis;
}
//____________________________
void AliFemtoCorrFctnTPCNcls::AddRealPair( AliFemtoPair* pair){
  // add real (effect) pair
  double tQinv = fabs(pair->QInv());   // note - qInv() will be negative for identical pairs...

  if (pair->Track1()->Track()->TPCncls()>pair->Track2()->Track()->TPCncls())
    fNclsTPCMinNumerator->Fill(tQinv, pair->Track2()->Track()->TPCncls());
  else
    fNclsTPCMinNumerator->Fill(tQinv, pair->Track1()->Track()->TPCncls());
}
//____________________________
void AliFemtoCorrFctnTPCNcls::AddMixedPair( AliFemtoPair* pair){
  // add mixed (background) pair
  double tQinv = fabs(pair->QInv());   // note - qInv() will be negative for identical pairs...

  if (pair->Track1()->Track()->TPCncls()>pair->Track2()->Track()->TPCncls())
    fNclsTPCMinDenominator->Fill(tQinv, pair->Track2()->Track()->TPCncls());
  else
    fNclsTPCMinDenominator->Fill(tQinv, pair->Track1()->Track()->TPCncls());
}


void AliFemtoCorrFctnTPCNcls::WriteHistos()
{
  // Write out result histograms
  fNclsTPCMinNumerator->Write();
  fNclsTPCMinDenominator->Write();
}

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

  tOutputList->Add(fNclsTPCMinNumerator);
  tOutputList->Add(fNclsTPCMinDenominator);
  
  return tOutputList;

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