1 ////////////////////////////////////////////////////////////////////////////////
3 /// AliFemtoModelGausLCMSFreezeOutGenerator - freeze-out ///
4 /// coordinates generator, generating a 3D gaussian ellipsoid in LCMS ///
5 /// Authors: Adam Kisiel kisiel@mps.ohio-state.edu ///
7 ////////////////////////////////////////////////////////////////////////////////
9 ClassImp(AliFemtoModelGausLCMSFreezeOutGenerator, 1)
13 #include "AliFemtoModelGausLCMSFreezeOutGenerator.h"
14 #include "AliFemtoModelHiddenInfo.h"
15 #include "AliFemtoLorentzVector.h"
18 //_______________________
19 AliFemtoModelGausLCMSFreezeOutGenerator::AliFemtoModelGausLCMSFreezeOutGenerator() :
20 fSizeOut(0), fSizeSide(0), fSizeLong(0)
22 // Default constructor
23 fRandom = new TRandom2();
26 //_______________________
27 AliFemtoModelGausLCMSFreezeOutGenerator::AliFemtoModelGausLCMSFreezeOutGenerator(const AliFemtoModelGausLCMSFreezeOutGenerator &aModel):
28 AliFemtoModelFreezeOutGenerator(aModel),
29 fSizeOut(0), fSizeSide(0), fSizeLong(0)
32 fRandom = new TRandom2();
33 SetSizeOut(aModel.GetSizeOut());
34 SetSizeSide(aModel.GetSizeSide());
35 SetSizeLong(aModel.GetSizeLong());
37 //_______________________
38 AliFemtoModelGausLCMSFreezeOutGenerator::~AliFemtoModelGausLCMSFreezeOutGenerator()
40 if (fRandom) delete fRandom;
42 //_______________________
43 AliFemtoModelGausLCMSFreezeOutGenerator& AliFemtoModelGausLCMSFreezeOutGenerator::operator=(const AliFemtoModelGausLCMSFreezeOutGenerator &aModel)
45 if (this != &aModel) {
46 fRandom = new TRandom2();
47 SetSizeOut(aModel.GetSizeOut());
48 SetSizeSide(aModel.GetSizeSide());
49 SetSizeLong(aModel.GetSizeLong());
54 //_______________________
55 void AliFemtoModelGausLCMSFreezeOutGenerator::GenerateFreezeOut(AliFemtoPair *aPair)
57 // Generate two particle emission points with respect
58 // to their pair momentum
59 // The source is the 3D Gaussian ellipsoid in the LCMS frame
60 //AliFemtoModelHiddenInfo *inf1 = (AliFemtoModelHiddenInfo *) aPair->Track1()->HiddenInfo();
61 //AliFemtoModelHiddenInfo *inf2 = (AliFemtoModelHiddenInfo *) aPair->Track2()->HiddenInfo();
62 AliFemtoTrack *inf1 = (AliFemtoTrack *) aPair->Track1()->Track();
63 AliFemtoTrack *inf2 = (AliFemtoTrack *) aPair->Track2()->Track();
65 if ((!inf1) || (!inf2)) { cout << "Hidden info not created! " << endl; exit(kFALSE); }
67 Double_t tPx = inf1->GetTrueMomentum()->x() + inf2->GetTrueMomentum()->x();
68 Double_t tPy = inf1->GetTrueMomentum()->y() + inf2->GetTrueMomentum()->y();
69 Double_t tPz = inf1->GetTrueMomentum()->z() + inf2->GetTrueMomentum()->z();
70 Double_t tM1 = inf1->GetMass();
71 Double_t tM2 = inf2->GetMass();
72 Double_t tE1 = sqrt(tM1*tM1 + inf1->GetTrueMomentum()->Mag2());
73 Double_t tE2 = sqrt(tM2*tM2 + inf2->GetTrueMomentum()->Mag2());
74 Double_t tEs = tE1 + tE2;
76 Double_t tPt = sqrt(tPx*tPx + tPy*tPy);
78 Double_t tRout = fRandom->Gaus(0.0, fSizeOut);
79 Double_t tRside = fRandom->Gaus(0.0, fSizeSide);
80 Double_t tRlong = fRandom->Gaus(0.0, fSizeLong);
82 Double_t tXout = (tPx * tRout + tPy * tRside)/tPt;
83 Double_t tXside = (tPy * tRout - tPx * tRside)/tPt;
85 Double_t tBetaz = tPz/tEs;
86 Double_t tGammaz = 1.0/TMath::Sqrt(1-tBetaz*tBetaz);
88 Double_t tXlong = tGammaz * (tRlong + tBetaz * 0);
89 Double_t tXtime = tGammaz * (0 + tBetaz * tRlong);
91 if (!(inf1->GetEmissionPoint())) {
92 AliFemtoLorentzVector *tPos = new AliFemtoLorentzVector(0,0,0,0);
93 inf1->SetEmissionPoint(tPos);
97 inf1->SetEmissionPoint(0,0,0,0);
98 if (!(inf2->GetEmissionPoint())) {
99 AliFemtoLorentzVector *tPos = new AliFemtoLorentzVector(tXout,tXside,tXlong,tXtime);
100 inf2->SetEmissionPoint(tPos);
104 inf2->SetEmissionPoint(tXout, tXside, tXlong, tXtime);
107 //_______________________
108 void AliFemtoModelGausLCMSFreezeOutGenerator::SetSizeOut(Double_t aSizeOut)
112 //_______________________
113 void AliFemtoModelGausLCMSFreezeOutGenerator::SetSizeSide(Double_t aSizeSide)
115 fSizeSide = aSizeSide;
117 //_______________________
118 void AliFemtoModelGausLCMSFreezeOutGenerator::SetSizeLong(Double_t aSizeLong)
120 fSizeLong = aSizeLong;
123 //_______________________
124 Double_t AliFemtoModelGausLCMSFreezeOutGenerator::GetSizeOut() const
128 //_______________________
129 Double_t AliFemtoModelGausLCMSFreezeOutGenerator::GetSizeSide() const
133 //_______________________
134 Double_t AliFemtoModelGausLCMSFreezeOutGenerator::GetSizeLong() const
138 //_______________________
139 AliFemtoModelFreezeOutGenerator* AliFemtoModelGausLCMSFreezeOutGenerator::Clone() const
141 return GetGenerator();
143 //_______________________
144 AliFemtoModelFreezeOutGenerator* AliFemtoModelGausLCMSFreezeOutGenerator::GetGenerator() const
146 AliFemtoModelFreezeOutGenerator* tModel = new AliFemtoModelGausLCMSFreezeOutGenerator(*this); return tModel;