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

AliFemtoCutMonitorParticleVertPos::AliFemtoCutMonitorParticleVertPos():
  fVertPos(0),
  fEtaZ(0),
  fRadPos(0),
  fEmPointX(0),
  fEmPointY(0),
  fEmPointZ(0),
  fEmPointT(0)
{
  // Default constructor
  fVertPos = new TH2D("VertPos", "Vertex position", 200, -20.0, 20.0, 200, -20.0, 20.0);
  fEtaZ    = new TH2D("EtaZPos", "Z vs. Eta", 200, -100.0, 100.0, 100, -1.5, 1.5);
  fRadPos  = new TH1D("RadPos",  "Radial position", 200, 0.0, 1.0);
  fEmPointX = new TH1D("EmPointX","Emission point x", 400, -200.0, 200.0);
  fEmPointY = new TH1D("EmPointY","Emission point y", 400, -200.0, 200.0);
  fEmPointZ = new TH1D("EmPointZ","Emission point z", 400, -200.0, 200.0);
  fEmPointT = new TH1D("EmPointT","Emission point t", 400, -200.0, 200.0);

}

AliFemtoCutMonitorParticleVertPos::AliFemtoCutMonitorParticleVertPos(const char *aName):
  AliFemtoCutMonitor(),
  fVertPos(0),
  fEtaZ(0),
  fRadPos(0),
  fEmPointX(0),
  fEmPointY(0),
  fEmPointZ(0),
  fEmPointT(0)
{
  // Normal constructor
  char name[200];
  snprintf(name, 200, "VertPos%s", aName);
  fVertPos = new TH2D(name, "Rapdity vs Pt", 200, -20.0, 20.0, 200, -20.0, 20.0);
  snprintf(name, 200, "EtaZPos%s", aName);
  fEtaZ    = new TH2D(name, "Z vs. Eta", 200, -100.0, 100.0, 100, -1.5, 1.5);
  snprintf(name, 200, "RadPos%s", aName);
  fRadPos  = new TH1D(name,  "Radial position", 200, 0.0, 1.0);
  snprintf(name, 200, "EmPosX%s", aName);
  fEmPointX = new TH1D(name,"Emission point x", 400, -200.0, 200.0);
  snprintf(name, 200, "EmPosY%s", aName);
  fEmPointY = new TH1D(name,"Emission point y", 400, -200.0, 200.0);
  snprintf(name, 200, "EmPosZ%s", aName);
  fEmPointZ = new TH1D(name,"Emission point z", 400, -200.0, 200.0);
  snprintf(name, 200, "EmPosT%s", aName);
  fEmPointT = new TH1D(name,"Emission point t", 400, -200.0, 200.0);
}

AliFemtoCutMonitorParticleVertPos::AliFemtoCutMonitorParticleVertPos(const AliFemtoCutMonitorParticleVertPos &aCut):
  AliFemtoCutMonitor(),
  fVertPos(0),
  fEtaZ(0),
  fRadPos(0),
  fEmPointX(0),
  fEmPointY(0),
  fEmPointZ(0),
  fEmPointT(0)
{
  // copy constructor
  if (fVertPos) delete fVertPos;
  fVertPos = new TH2D(*aCut.fVertPos);
  if (fEtaZ) delete fEtaZ;
  fEtaZ = new TH2D(*aCut.fEtaZ);
  if (fRadPos) delete fRadPos;
  fRadPos = new TH1D(*aCut.fRadPos);
  if (fEmPointX) delete fEmPointX;
  fEmPointX = new TH1D(*aCut.fEmPointX);
  if (fEmPointY) delete fEmPointY;
  fEmPointY = new TH1D(*aCut.fEmPointY);
  if (fEmPointZ) delete fEmPointZ;
  fEmPointZ = new TH1D(*aCut.fEmPointZ);
  if (fEmPointT) delete fEmPointT;
  fEmPointT = new TH1D(*aCut.fEmPointT);
}

AliFemtoCutMonitorParticleVertPos::~AliFemtoCutMonitorParticleVertPos()
{
  // Destructor
  delete fVertPos;
  delete fEtaZ;
  delete fRadPos;
  delete fEmPointX;
  delete fEmPointY;
  delete fEmPointZ;
  delete fEmPointT;
}

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

  if (fVertPos) delete fVertPos;
  fVertPos = new TH2D(*aCut.fVertPos);
  if (fEtaZ) delete fEtaZ;
  fEtaZ = new TH2D(*aCut.fEtaZ);
  if (fRadPos) delete fRadPos;
  fRadPos = new TH1D(*aCut.fRadPos);
  if (fEmPointX) delete fEmPointX;
  fEmPointX = new TH1D(*aCut.fEmPointX);
  if (fEmPointY) delete fEmPointY;
  fEmPointY = new TH1D(*aCut.fEmPointY);
  if (fEmPointZ) delete fEmPointZ;
  fEmPointZ = new TH1D(*aCut.fEmPointZ);
  if (fEmPointT) delete fEmPointT;
  fEmPointT = new TH1D(*aCut.fEmPointT);
  
  return *this;
}

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

void AliFemtoCutMonitorParticleVertPos::Fill(const AliFemtoTrack* aTrack)
{
  // Fill in the monitor histograms with the values from the current track
  AliFemtoModelGlobalHiddenInfo *hinfo = dynamic_cast<AliFemtoModelGlobalHiddenInfo *>(aTrack->GetHiddenInfo());
  if (hinfo) {
    float tEta = -TMath::Log(TMath::Tan(hinfo->GetTrueMomentum()->Theta()/2.0));

    fVertPos->Fill(hinfo->GetGlobalEmissionPoint()->x(), hinfo->GetGlobalEmissionPoint()->y());
    fEtaZ->Fill(hinfo->GetGlobalEmissionPoint()->z(), tEta);
    fRadPos->Fill(hinfo->GetGlobalEmissionPoint()->Perp());
  }
  
  AliFemtoModelHiddenInfo *hminfo = dynamic_cast<AliFemtoModelHiddenInfo *>(aTrack->GetHiddenInfo());
  if (hminfo) {
    fEmPointX->Fill(hminfo->GetEmissionPoint()->x());
    fEmPointY->Fill(hminfo->GetEmissionPoint()->y());
    fEmPointZ->Fill(hminfo->GetEmissionPoint()->z());
    fEmPointT->Fill(hminfo->GetEmissionPoint()->t());
  }
}

void AliFemtoCutMonitorParticleVertPos::Write()
{
  // Write out the relevant histograms
  fVertPos->Write();
  fEtaZ->Write();
  fRadPos->Write();
  fEmPointX->Write();
  fEmPointY->Write();
  fEmPointZ->Write();
  fEmPointT->Write();
}

TList *AliFemtoCutMonitorParticleVertPos::GetOutputList()
{
  TList *tOutputList = new TList();
  tOutputList->Add(fVertPos);
  tOutputList->Add(fEtaZ);
  tOutputList->Add(fRadPos);
  tOutputList->Add(fEmPointX);
  tOutputList->Add(fEmPointY);
  tOutputList->Add(fEmPointZ);
  tOutputList->Add(fEmPointT);

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