ROOT logo
////////////////////////////////////////////////////////////////////////////////
//                                                                            //
// AliFemtoCutMonitorParticleYPt - the cut monitor for particles to study    //
// the difference between reconstructed and true momentum                     //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////
#include "AliFemtoCutMonitorParticleYPt.h"
#include "AliFemtoModelHiddenInfo.h"
#include <TH1D.h>
#include <TH2D.h>
#include <TList.h>
#include <TMath.h>

AliFemtoCutMonitorParticleYPt::AliFemtoCutMonitorParticleYPt():
  fYPt(0),
  fYPhi(0),
  fPtPhi(0),
  fEtaPhi(0),
  fEtaPt(0),
  fEtaPhiW(0),
  fEtaPtW(0),
  fDCARPt(0),
  fDCAZPt(0),
  fMass(0.13957)
{
  // Default constructor
  fYPt = new TH2D("YPt", "Rapidity vs Pt",              140, -1.4, 1.4, 100, 0.0, 5.0);
  fYPhi = new TH2D("YPhi", "Rapidity vs Phi",           140, -1.4, 1.4, 100, -TMath::Pi(), TMath::Pi());
  fPtPhi = new TH2D("PtPhi", "Pt vs Phi",               100,  0.0, 5.0, 100, -TMath::Pi(), TMath::Pi());
  fEtaPhi = new TH2D("EtaPhi", "Pseudorapidity vs Phi", 140, -1.4, 1.4, 100, -TMath::Pi(), TMath::Pi());
  fEtaPt = new TH2D("EtaPt", "Pseudorapidity vs Pt",    140, -1.4, 1.4, 100, 0.0, 5.0);
  // fEtaPhiW = new TH2D("EtaPhiW", "Pseudorapidity vs Phi chi2/N weighted", 140, -1.4, 1.4, 100, -TMath::Pi(), TMath::Pi());
  // fEtaPtW = new TH2D("EtaPtW", "Pseudorapidity vs Pt chi2/N weighted",    140, -1.4, 1.4, 100, 0.0, 5.0)
  ;
  fDCARPt = new TH2D("DCARPt", "DCA in XY vs. Pt", 400, -3.0, 3.0, 100,0.0,5.0);
  fDCAZPt = new TH2D("DCAZPt", "DCA in Z vs. Pt", 400, -3.0, 3.0, 100,0.0,5.0);
}

AliFemtoCutMonitorParticleYPt::AliFemtoCutMonitorParticleYPt(const char *aName, float aMass):
  AliFemtoCutMonitor(),
  fYPt(0),
  fYPhi(0),
  fPtPhi(0),
  fEtaPhi(0),
  fEtaPt(0),
  fEtaPhiW(0),
  fEtaPtW(0),
  fDCARPt(0),
  fDCAZPt(0),
  fMass(aMass)
{
  // Normal constructor
  char name[200];
  snprintf(name, 200, "YPt%s", aName);
    fYPt = new TH2D(name, "Rapdity vs Pt", 140, -1.4, 1.4, 100, 0.0, 5.0);
  snprintf(name, 200, "YPhi%s", aName);
  fYPhi = new TH2D(name, "Rapidity vs Phi",           140, -1.4, 1.4, 100, -TMath::Pi(), TMath::Pi());
  snprintf(name, 200, "PtPhi%s", aName);
    fPtPhi = new TH2D(name, "Pt vs Phi",               100,  0.0, 5.0, 100, -TMath::Pi(), TMath::Pi());
  snprintf(name, 200, "EtaPhi%s", aName);
  fEtaPhi = new TH2D(name, "Pseudorapidity vs Phi", 140, -1.4, 1.4, 100, -TMath::Pi(), TMath::Pi());
  snprintf(name, 200, "EtaPt%s", aName);
    fEtaPt = new TH2D(name, "Pseudorapidity vs Pt",    140, -1.4, 1.4, 100, 0.0, 5.0);
  // snprintf(name, 200, "EtaPhiW%s", aName);
  // fEtaPhiW = new TH2D(name, "Pseudorapidity vs Phi chi2/N weighted", 140, -1.4, 1.4, 100, -TMath::Pi(), TMath::Pi());
  // snprintf(name, 200, "EtaPtW%s", aName);
  // fEtaPtW = new TH2D(name, "Pseudorapidity vs Pt chi2/N weighted",    140, -1.4, 1.4, 100, 0.0, 2.0);
  snprintf(name, 200, "DCARPt%s", aName);
    fDCARPt = new TH2D(name, "DCA in XY vs. Pt", 400, -3.0, 3.0, 100,0.0,3.0);
  snprintf(name, 200, "DCAZPt%s", aName);
    fDCAZPt = new TH2D(name, "DCA in Z vs. Pt", 400, -3.0, 3.0, 100,0.0,3.0);
}

AliFemtoCutMonitorParticleYPt::AliFemtoCutMonitorParticleYPt(const AliFemtoCutMonitorParticleYPt &aCut):
  AliFemtoCutMonitor(),
  fYPt(0),
  fYPhi(0),
  fPtPhi(0),
  fEtaPhi(0),
  fEtaPt(0),
  fEtaPhiW(0),
  fEtaPtW(0),
  fDCARPt(0),
  fDCAZPt(0),
  fMass(0.13957)
{
  // copy constructor
  fYPt = new TH2D(*aCut.fYPt);
  fYPhi = new TH2D(*aCut.fYPhi);
  fPtPhi = new TH2D(*aCut.fPtPhi);
  fEtaPhi = new TH2D(*aCut.fEtaPhi);
  fEtaPt = new TH2D(*aCut.fEtaPt);
  // fEtaPhiW = new TH2D(*aCut.fEtaPhiW);
  // fEtaPtW = new TH2D(*aCut.fEtaPtW);
  fDCARPt = new TH2D(*aCut.fDCARPt);
  fDCAZPt = new TH2D(*aCut.fDCAZPt);
  fMass = aCut.fMass; 
}

AliFemtoCutMonitorParticleYPt::~AliFemtoCutMonitorParticleYPt()
{
  // Destructor
  delete fYPt;
  delete fYPhi;
  delete fPtPhi;
  delete fEtaPhi;
  delete fEtaPt;
  // delete fEtaPhiW;
  // delete fEtaPtW;
  delete fDCARPt;
  delete fDCAZPt;
}

AliFemtoCutMonitorParticleYPt& AliFemtoCutMonitorParticleYPt::operator=(const AliFemtoCutMonitorParticleYPt& aCut)
{
  // assignment operator
  if (this == &aCut) 
    return *this;

  if (fYPt) delete fYPt;
  fYPt = new TH2D(*aCut.fYPt);
  if (fYPhi) delete fYPhi;
  fYPhi = new TH2D(*aCut.fYPhi);
  if (fPtPhi) delete fPtPhi;
  fPtPhi = new TH2D(*aCut.fPtPhi);
  if (fEtaPhi) delete fEtaPhi;
  fEtaPhi = new TH2D(*aCut.fEtaPhi);
  if (fEtaPt) delete fEtaPt;
  fEtaPt = new TH2D(*aCut.fEtaPt);
  // if (fEtaPhiW) delete fEtaPhiW;
  // fEtaPhiW = new TH2D(*aCut.fEtaPhiW);
  // if (fEtaPtW) delete fEtaPtW;
  // fEtaPtW = new TH2D(*aCut.fEtaPtW);
  if (fDCARPt) delete fDCARPt;
  fDCARPt = new TH2D(*aCut.fDCARPt);
  if (fDCAZPt) delete fDCAZPt;
  fDCAZPt = new TH2D(*aCut.fDCAZPt);
  
  return *this;
}

AliFemtoString AliFemtoCutMonitorParticleYPt::Report(){ 
  // Prepare report from the execution
  string stemp = "*** AliFemtoCutMonitorParticleYPt report"; 
  AliFemtoString returnThis = stemp;
  return returnThis; 
}

void AliFemtoCutMonitorParticleYPt::Fill(const AliFemtoTrack* aTrack)
{
  // Fill in the monitor histograms with the values from the current track
  float tEnergy = ::sqrt(aTrack->P().Mag2()+fMass*fMass);
  if(tEnergy==abs(aTrack->P().z())) tEnergy+=0.001;
  float tRapidity = 0.5*::log((tEnergy+aTrack->P().z())/(tEnergy-aTrack->P().z()));
  float tPt = ::sqrt((aTrack->P().x())*(aTrack->P().x())+(aTrack->P().y())*(aTrack->P().y()));
  
  float tEta;
  if(aTrack->P().Theta()==0)
    tEta=0;
  else
    tEta = -TMath::Log(TMath::Tan(aTrack->P().Theta()/2.0));
  float tPhi = aTrack->P().Phi();
  // float chi2w;
  float dcar = aTrack->ImpactD();
  float dcaz = aTrack->ImpactZ();
  // if (aTrack->TPCncls() > 0)
  //   chi2w = aTrack->TPCchi2()/aTrack->TPCncls();
  // else
  //   chi2w = 6.0;

  //  cout << " CMYPt: " << fYPt << " " << fYPt->GetEntries() << " " << tRapidity << " " << tPt << endl;

  fYPt->Fill(tRapidity, tPt);
  fYPhi->Fill(tRapidity, tPhi);
  fPtPhi->Fill(tPt, tPhi);
  fEtaPhi->Fill(tEta, tPhi);
  fEtaPt->Fill(tEta, tPt);
  // fEtaPhiW->Fill(tEta, tPhi, chi2w);
  // fEtaPtW->Fill(tEta, tPt, chi2w);
  fDCARPt->Fill(dcar, tPt);
  fDCAZPt->Fill(dcaz, tPt);
}

void AliFemtoCutMonitorParticleYPt::Write()
{
  // Write out the relevant histograms
  fYPt->Write();
  fYPhi->Write();
  fPtPhi->Write();
  fEtaPhi->Write();
  fEtaPt->Write();
  // fEtaPhiW->Write();
  // fEtaPtW->Write();
  fDCARPt->Write();
  fDCAZPt->Write();
}

TList *AliFemtoCutMonitorParticleYPt::GetOutputList()
{
  TList *tOutputList = new TList();
  tOutputList->Add(fYPt);
  tOutputList->Add(fYPhi);
  tOutputList->Add(fPtPhi);
  tOutputList->Add(fEtaPhi);
  tOutputList->Add(fEtaPt);
  // tOutputList->Add(fEtaPhiW);
  // tOutputList->Add(fEtaPtW);
  tOutputList->Add(fDCARPt);
  tOutputList->Add(fDCAZPt);

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