1 ////////////////////////////////////////////////////////////////////////////////
3 /// AliFemtoModelManager - main helper class for femtoscopy calculations ///
4 /// Manages weight generation, freeze-out coordinates generation ///
5 /// Authors: Adam Kisiel kisiel@mps.ohio-state.edu ///
7 ////////////////////////////////////////////////////////////////////////////////
9 ClassImp(AliFemtoModelManager, 1)
12 #include "AliFemtoModelManager.h"
13 #include "AliFemtoModelHiddenInfo.h"
15 //_____________________________________________
16 AliFemtoModelManager::AliFemtoModelManager():
17 fFreezeOutGenerator(0),
19 fCreateCopyHiddenInfo(kFALSE)
22 //_____________________________________________
23 AliFemtoModelManager::AliFemtoModelManager(const AliFemtoModelManager& aManager):
24 fFreezeOutGenerator(0),
26 fCreateCopyHiddenInfo(aManager.fCreateCopyHiddenInfo)
28 if (aManager.fFreezeOutGenerator) {
29 fFreezeOutGenerator = aManager.fFreezeOutGenerator->Clone();
31 if (aManager.fWeightGenerator) {
32 fWeightGenerator = aManager.fWeightGenerator->Clone();
35 //_____________________________________________
36 AliFemtoModelManager::~AliFemtoModelManager()
38 if (fFreezeOutGenerator) delete fFreezeOutGenerator;
39 if (fWeightGenerator) delete fWeightGenerator;
41 //_____________________________________________
42 AliFemtoModelManager& AliFemtoModelManager::operator=(const AliFemtoModelManager& aManager)
44 if (this == &aManager)
46 if (aManager.fFreezeOutGenerator) {
47 fFreezeOutGenerator = aManager.fFreezeOutGenerator->Clone();
49 else fFreezeOutGenerator = 0;
50 if (aManager.fWeightGenerator) {
51 fWeightGenerator = aManager.fWeightGenerator->Clone();
53 else fWeightGenerator = 0;
54 fCreateCopyHiddenInfo = aManager.fCreateCopyHiddenInfo;
58 //_____________________________________________
59 void AliFemtoModelManager::AcceptFreezeOutGenerator(AliFemtoModelFreezeOutGenerator *aFreeze)
61 fFreezeOutGenerator = aFreeze;
63 //_____________________________________________
64 void AliFemtoModelManager::AcceptWeightGenerator(AliFemtoModelWeightGenerator *aWeight)
66 fWeightGenerator = aWeight;
68 //_____________________________________________
69 Double_t AliFemtoModelManager::GetWeight(AliFemtoPair *aPair)
71 if (!fWeightGenerator) {
72 cout << "No weight generator set! Cannot calculate weight" << endl;
75 // Return femtoscopic weight for a fiven pair
76 if (fCreateCopyHiddenInfo) {
77 // Try to gess particle masses and pid from the weight generator
78 Double_t tMass1, tMass2;
80 if (fWeightGenerator->GetPairType() == AliFemtoModelWeightGenerator::fgkPionPlusPionPlus) {
86 if (fWeightGenerator->GetPairType() == AliFemtoModelWeightGenerator::fgkPionPlusPionMinus) {
92 if (fWeightGenerator->GetPairType() == AliFemtoModelWeightGenerator::fgkKaonPlusKaonPlus) {
98 if (fWeightGenerator->GetPairType() == AliFemtoModelWeightGenerator::fgkKaonPlusKaonMinus) {
104 if (fWeightGenerator->GetPairType() == AliFemtoModelWeightGenerator::fgkProtonProton) {
110 if (fWeightGenerator->GetPairType() == AliFemtoModelWeightGenerator::fgkProtonAntiproton) {
116 if (fWeightGenerator->GetPairType() == AliFemtoModelWeightGenerator::fgkPionPlusKaonPlus) {
122 if (fWeightGenerator->GetPairType() == AliFemtoModelWeightGenerator::fgkPionPlusKaonMinus) {
128 if (fWeightGenerator->GetPairType() == AliFemtoModelWeightGenerator::fgkPionPlusProton) {
134 if (fWeightGenerator->GetPairType() == AliFemtoModelWeightGenerator::fgkPionPlusAntiproton) {
140 if (fWeightGenerator->GetPairType() == AliFemtoModelWeightGenerator::fgkKaonPlusProton) {
146 if (fWeightGenerator->GetPairType() == AliFemtoModelWeightGenerator::fgkKaonPlusAntiproton) {
153 if (!(aPair->Track1()->HiddenInfo())) {
154 AliFemtoModelHiddenInfo *inf1 = new AliFemtoModelHiddenInfo();
155 inf1->SetTrueMomentum(aPair->Track1()->Track()->P());
156 inf1->SetMass(tMass1);
157 inf1->SetPDGPid(tPid1);
158 aPair->Track1()->SetHiddenInfo(inf1);
161 if (!(aPair->Track2()->HiddenInfo())) {
162 AliFemtoModelHiddenInfo *inf2 = new AliFemtoModelHiddenInfo();
163 inf2->SetTrueMomentum(aPair->Track2()->Track()->P());
164 inf2->SetMass(tMass2);
165 inf2->SetPDGPid(tPid2);
166 aPair->Track2()->SetHiddenInfo(inf2);
171 if (fFreezeOutGenerator) {
172 fFreezeOutGenerator->GenerateFreezeOut(aPair);
174 return fWeightGenerator->GenerateWeight(aPair);
176 //_____________________________________________
177 void AliFemtoModelManager::CreateCopyHiddenInfo()
179 fCreateCopyHiddenInfo = kTRUE;
181 //_____________________________________________
182 AliFemtoModelFreezeOutGenerator* AliFemtoModelManager::GetFreezeOutGenerator()
184 return fFreezeOutGenerator;
186 //_____________________________________________
187 AliFemtoModelWeightGenerator* AliFemtoModelManager::GetWeightGenerator()
189 return fWeightGenerator;