ROOT logo
////////////////////////////////////////////////////////////////////////////////
//                                                                            //
// AliFemtoCorrFctnGammaMonitor - A correlation function that analyzes        //
// two particle mass minvariant with various mass assumptions                 //
//                                                                            //
// Authors: MaƂgorzata Janik majanik@cern.ch
//          Anna Zaborowska azaborow@cern.ch                                   //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////

#include "AliFemtoCorrFctnMinvMonitor.h"
#include <cstdio>
#include <TMath.h>

#ifdef __ROOT__
ClassImp(AliFemtoCorrFctnMinvMonitor)
#endif

//____________________________
AliFemtoCorrFctnMinvMonitor::AliFemtoCorrFctnMinvMonitor(char* title):
   AliFemtoCorrFctn(),
   fMinveeFail(0),
   fMinvee(0),
   fMinv2piFail(0),
   fMinv2pi(0),
   fMinvppiFail(0),
   fMinvppi(0)
{
  fMinveeFail = new TH1D(Form("MinveeGamma%s",title), "ee mass assumption GAMMA, minv",1000, 0.0, 10.0);
   fMinvee = new TH1D(Form("Minvee%s",title), "ee mass assumption, minv",1000, 0.0, 10.0);
   fMinv2piFail = new TH1D(Form("Minv2piResonances%s",title), "pipi mass assumption RESONANCES, minv",1000, 0.0, 10.0);
   fMinv2pi = new TH1D(Form("Minv2pi%s",title), "pipi mass assumption, minv",1000, 0.0, 10.0);
   fMinvppiFail = new TH1D(Form("MinvppiResonances%s",title), "ppi mass assumption RESONANCES, minv",1000, 0.0, 10.0);
   fMinvppi = new TH1D(Form("Minvppi%s",title), "ppi mass assumption, minv",1000, 0.0, 10.0);
}

//____________________________
AliFemtoCorrFctnMinvMonitor::AliFemtoCorrFctnMinvMonitor(const AliFemtoCorrFctnMinvMonitor& aCorrFctn) :
  AliFemtoCorrFctn(),
   fMinveeFail(0),
   fMinvee(0),
   fMinv2piFail(0),
   fMinv2pi(0),
   fMinvppiFail(0),
   fMinvppi(0)
{
  // copy constructor
  if (fMinveeFail) delete fMinveeFail;
  fMinveeFail = new TH1D(*aCorrFctn.fMinveeFail);
  if (fMinvee) delete fMinvee;
  fMinvee = new TH1D(*aCorrFctn.fMinvee);
  if (fMinv2piFail) delete fMinv2piFail;
  fMinv2piFail = new TH1D(*aCorrFctn.fMinv2piFail);
  if (fMinv2pi) delete fMinv2pi;
  fMinv2pi = new TH1D(*aCorrFctn.fMinv2pi);
  if (fMinvppiFail) delete fMinvppiFail;
  fMinvppiFail = new TH1D(*aCorrFctn.fMinvppiFail);
  if (fMinvppi) delete fMinvppi;
  fMinvppi = new TH1D(*aCorrFctn.fMinvppi);
}
//____________________________
AliFemtoCorrFctnMinvMonitor::~AliFemtoCorrFctnMinvMonitor(){
  // destructor
    delete fMinveeFail;
  delete fMinvee;
  delete fMinv2piFail;
  delete fMinv2pi;
  delete fMinvppiFail;
  delete fMinvppi;
}
//_________________________
AliFemtoCorrFctnMinvMonitor& AliFemtoCorrFctnMinvMonitor::operator=(const AliFemtoCorrFctnMinvMonitor& aCorrFctn)
{
  // assignment operator
  if (this == &aCorrFctn)
    return *this;

  if (fMinveeFail) delete fMinveeFail;
  fMinveeFail = new TH1D(*aCorrFctn.fMinveeFail);
  if (fMinvee) delete fMinvee;
  fMinvee = new TH1D(*aCorrFctn.fMinvee);
  if (fMinv2piFail) delete fMinv2piFail;
  fMinv2piFail = new TH1D(*aCorrFctn.fMinv2piFail);
  if (fMinv2pi) delete fMinv2pi;
  fMinv2pi = new TH1D(*aCorrFctn.fMinv2pi);
  if (fMinvppiFail) delete fMinvppiFail;
  fMinvppiFail = new TH1D(*aCorrFctn.fMinvppiFail);
  if (fMinvppi) delete fMinvppi;
  fMinvppi = new TH1D(*aCorrFctn.fMinvppi);

  return *this;
}
//_________________________
void AliFemtoCorrFctnMinvMonitor::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 AliFemtoCorrFctnMinvMonitor::Report(){
  // create report
  string stemp = "Mass invariant Monitor Function Report\n";
  AliFemtoString returnThis = stemp;
  return returnThis;
}
//____________________________
void AliFemtoCorrFctnMinvMonitor::AddRealPair( AliFemtoPair* pair){
   double me = 0.000511;
  double mPi = 0.13957018;
  double mp = 0.938272046;

  double mgammamax = 0.04;
  double mK0min = 0.00049;
  double mK0max = 0.00051;
  //double mK0 = 0.000497614;
  double mRhomin = 0.000765;
  double mRhomax = 0.000785;
  //double mRho = 0.00077526;
  double mLmin = 1.095;
  double mLmax = 1.135;
  //double mL = 1.115683;

  if ((pair->Track1()->Track()->Charge() * pair->Track2()->Track()->Charge()) < 0.0) {

    // check on ee pairs (gamma)
    double e1 = TMath::Sqrt(me*me + pair->Track1()->Track()->P().Mag2());
    double e2 = TMath::Sqrt(me*me + pair->Track2()->Track()->P().Mag2());
    double minvGamma = 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 ( minvGamma < mgammamax )
    {
       fMinveeFail->Fill(minvGamma);
    }
    else fMinvee->Fill(minvGamma);
    //check on resonances
    double pi1 =  TMath::Sqrt(mPi*mPi + pair->Track1()->Track()->P().Mag2());
    double pi2 =  TMath::Sqrt(mPi*mPi + pair->Track2()->Track()->P().Mag2());
    double p1 =  TMath::Sqrt(mp*mp + pair->Track1()->Track()->P().Mag2());
    double p2 =  TMath::Sqrt(mp*mp + pair->Track2()->Track()->P().Mag2());
    //check on K0 and Rho
    double minv2pi = 2*mPi*mPi + 2*(pi1*pi2 -
			       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 ( ((minv2pi>mK0min && minv2pi<mK0max) || (minv2pi>mRhomin && minv2pi<mRhomax)) )
    {
       fMinv2piFail->Fill(minv2pi);
    }
    else fMinv2pi->Fill(minv2pi);
    //check on L0
    double minvpPi = 2*mp*mPi + 2*(p1*pi2 -
			       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());
    double minvPip = 2*mPi*mp + 2*(pi1*p2 -
			       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( (minvpPi>mLmin) && (minvpPi<mLmax) )
    {
       fMinvppiFail->Fill(minvpPi);
    }
    else fMinvppi->Fill(minvpPi);
    if( (minvPip>mLmin) && (minvPip<mLmax) )
    {
       fMinvppiFail->Fill(minvPip);
    }
    else fMinvppi->Fill(minvPip);
  }
}
//____________________________

void AliFemtoCorrFctnMinvMonitor::WriteHistos()
{
  // Write out result histograms
  fMinveeFail->Write();
  fMinvee->Write();
  fMinv2piFail->Write();
  fMinv2pi->Write();
  fMinvppiFail->Write();
  fMinvppi->Write();
}

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

  tOutputList->Add(fMinveeFail);
  tOutputList->Add(fMinvee);
  tOutputList->Add(fMinv2piFail);
  tOutputList->Add(fMinv2pi);
  tOutputList->Add(fMinvppiFail);
  tOutputList->Add(fMinvppi);

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