1 ////////////////////////////////////////////////////////////////////////////////
3 // AliFemtoCorrFctnTPCNcls - A correlation function that saves the correlation//
4 // function as a function of number of TPC clusters of the track //
6 // Authors: Adam Kisiel kisiel@mps.ohio-state.edu //
8 ////////////////////////////////////////////////////////////////////////////////
10 #include "AliFemtoCorrFctnTPCNcls.h"
11 //#include "AliFemtoHisto.hh"
15 ClassImp(AliFemtoCorrFctnTPCNcls)
18 //____________________________
19 AliFemtoCorrFctnTPCNcls::AliFemtoCorrFctnTPCNcls(char* title, const int& nbins, const float& QinvLo, const float& QinvHi):
21 fNclsTPCMinNumerator(0),
22 fNclsTPCMinDenominator(0)
25 char tTitNum[101] = "NumNclsTPCMin";
26 strncat(tTitNum,title, 100);
27 fNclsTPCMinNumerator = new TH2D(tTitNum,title,nbins,QinvLo,QinvHi,159,0.5,159.5);
29 char tTitDen[101] = "DenNclsTPCMin";
30 strncat(tTitDen,title, 100);
31 fNclsTPCMinDenominator = new TH2D(tTitDen,title,nbins,QinvLo,QinvHi,159,0.5,159.5);
33 // to enable error bar calculation...
34 fNclsTPCMinNumerator->Sumw2();
35 fNclsTPCMinDenominator->Sumw2();
38 //____________________________
39 AliFemtoCorrFctnTPCNcls::AliFemtoCorrFctnTPCNcls(const AliFemtoCorrFctnTPCNcls& aCorrFctn) :
41 fNclsTPCMinNumerator(0),
42 fNclsTPCMinDenominator(0)
45 if (aCorrFctn.fNclsTPCMinNumerator)
46 fNclsTPCMinNumerator = new TH2D(*aCorrFctn.fNclsTPCMinNumerator);
47 if (aCorrFctn.fNclsTPCMinDenominator)
48 fNclsTPCMinDenominator = new TH2D(*aCorrFctn.fNclsTPCMinDenominator);
50 //____________________________
51 AliFemtoCorrFctnTPCNcls::~AliFemtoCorrFctnTPCNcls(){
53 delete fNclsTPCMinNumerator;
54 delete fNclsTPCMinDenominator;
56 //_________________________
57 AliFemtoCorrFctnTPCNcls& AliFemtoCorrFctnTPCNcls::operator=(const AliFemtoCorrFctnTPCNcls& aCorrFctn)
59 // assignment operator
60 if (this == &aCorrFctn)
63 if (aCorrFctn.fNclsTPCMinNumerator)
64 fNclsTPCMinNumerator = new TH2D(*aCorrFctn.fNclsTPCMinNumerator);
66 fNclsTPCMinNumerator = 0;
67 if (aCorrFctn.fNclsTPCMinDenominator)
68 fNclsTPCMinDenominator = new TH2D(*aCorrFctn.fNclsTPCMinDenominator);
70 fNclsTPCMinDenominator = 0;
74 //_________________________
75 void AliFemtoCorrFctnTPCNcls::Finish(){
76 // here is where we should normalize, fit, etc...
77 // we should NOT Draw() the histos (as I had done it below),
78 // since we want to insulate ourselves from root at this level
79 // of the code. Do it instead at root command line with browser.
80 // mShareNumerator->Draw();
81 //mShareDenominator->Draw();
86 //____________________________
87 AliFemtoString AliFemtoCorrFctnTPCNcls::Report(){
89 string stemp = "TPC Ncls Correlation Function Report:\n";
91 snprintf(ctemp , 100, "Number of entries in numerator:\t%E\n",fNclsTPCMinNumerator->GetEntries());
93 snprintf(ctemp , 100, "Number of entries in denominator:\t%E\n",fNclsTPCMinDenominator->GetEntries());
95 // stemp += mCoulombWeight->Report();
96 AliFemtoString returnThis = stemp;
99 //____________________________
100 void AliFemtoCorrFctnTPCNcls::AddRealPair( AliFemtoPair* pair){
101 // add real (effect) pair
102 double tQinv = fabs(pair->QInv()); // note - qInv() will be negative for identical pairs...
104 if (pair->Track1()->Track()->TPCncls()>pair->Track2()->Track()->TPCncls())
105 fNclsTPCMinNumerator->Fill(tQinv, pair->Track2()->Track()->TPCncls());
107 fNclsTPCMinNumerator->Fill(tQinv, pair->Track1()->Track()->TPCncls());
109 //____________________________
110 void AliFemtoCorrFctnTPCNcls::AddMixedPair( AliFemtoPair* pair){
111 // add mixed (background) pair
112 double tQinv = fabs(pair->QInv()); // note - qInv() will be negative for identical pairs...
114 if (pair->Track1()->Track()->TPCncls()>pair->Track2()->Track()->TPCncls())
115 fNclsTPCMinDenominator->Fill(tQinv, pair->Track2()->Track()->TPCncls());
117 fNclsTPCMinDenominator->Fill(tQinv, pair->Track1()->Track()->TPCncls());
121 void AliFemtoCorrFctnTPCNcls::WriteHistos()
123 // Write out result histograms
124 fNclsTPCMinNumerator->Write();
125 fNclsTPCMinDenominator->Write();
128 TList* AliFemtoCorrFctnTPCNcls::GetOutputList()
130 // Prepare the list of objects to be written to the output
131 TList *tOutputList = new TList();
133 tOutputList->Add(fNclsTPCMinNumerator);
134 tOutputList->Add(fNclsTPCMinDenominator);