ROOT logo
////////////////////////////////////////////////////////////////////////////////
///                                                                          ///
/// AliFemtoModelManager - main helper class for femtoscopy calculations     ///
/// Manages weight generation, freeze-out coordinates generation             ///
/// Authors: Adam Kisiel kisiel@mps.ohio-state.edu                           ///
///                                                                          ///
////////////////////////////////////////////////////////////////////////////////
#ifdef __ROOT__
  ClassImp(AliFemtoModelManager, 1)
#endif

#include "AliFemtoModelManager.h"
#include "AliFemtoModelHiddenInfo.h"

//_____________________________________________
AliFemtoModelManager::AliFemtoModelManager():
  fFreezeOutGenerator(0),
  fWeightGenerator(0),
  fCreateCopyHiddenInfo(kFALSE)
{
}
//_____________________________________________
AliFemtoModelManager::AliFemtoModelManager(const AliFemtoModelManager& aManager):
  fFreezeOutGenerator(0),
  fWeightGenerator(0),
  fCreateCopyHiddenInfo(aManager.fCreateCopyHiddenInfo)
{
  if (aManager.fFreezeOutGenerator) {
    fFreezeOutGenerator = aManager.fFreezeOutGenerator->Clone();
  }
  if (aManager.fWeightGenerator) {
    fWeightGenerator = aManager.fWeightGenerator->Clone();
  }
}
//_____________________________________________
AliFemtoModelManager::~AliFemtoModelManager()
{
  if (fFreezeOutGenerator) delete fFreezeOutGenerator;
  if (fWeightGenerator) delete fWeightGenerator;
}
//_____________________________________________
AliFemtoModelManager& AliFemtoModelManager::operator=(const AliFemtoModelManager& aManager)
{
  if (this == &aManager)
    return *this;
  if (aManager.fFreezeOutGenerator) {
    fFreezeOutGenerator = aManager.fFreezeOutGenerator->Clone();
  }
  else fFreezeOutGenerator = 0;
  if (aManager.fWeightGenerator) {
    fWeightGenerator = aManager.fWeightGenerator->Clone();
  }
  else fWeightGenerator = 0;
  fCreateCopyHiddenInfo = aManager.fCreateCopyHiddenInfo;
  
  return *this;
}
//_____________________________________________
void AliFemtoModelManager::AcceptFreezeOutGenerator(AliFemtoModelFreezeOutGenerator *aFreeze)
{
  fFreezeOutGenerator = aFreeze;
}
//_____________________________________________
void AliFemtoModelManager::AcceptWeightGenerator(AliFemtoModelWeightGenerator *aWeight)
{
  fWeightGenerator = aWeight;
}
//_____________________________________________
Double_t AliFemtoModelManager::GetWeight(AliFemtoPair *aPair)
{
  if (!fWeightGenerator) {
    cout << "No weight generator set! Cannot calculate weight" << endl;
    exit(0);
  }
  // Return femtoscopic weight for a given pair
  if (fCreateCopyHiddenInfo) {
    // Try to guess particle masses and pid from the weight generator
    Double_t tMass1=0.0001, tMass2=0.0001;
    Int_t tPid1=0, tPid2=0;
    if (fWeightGenerator->GetPairType() == AliFemtoModelWeightGenerator::PionPlusPionPlus()) {
      tMass1 = 0.13957;
      tMass2 = 0.13957;
      tPid1 = 211;
      tPid2 = 211;
    }
    if (fWeightGenerator->GetPairType() == AliFemtoModelWeightGenerator::PionPlusPionMinus()) {
      tMass1 = 0.13957;
      tMass2 = 0.13957;
      tPid1 = 211;
      tPid2 = -211;
    }
    if (fWeightGenerator->GetPairType() == AliFemtoModelWeightGenerator::KaonPlusKaonPlus()) {
      tMass1 = 0.493677;
      tMass2 = 0.493677;
      tPid1 = 321;
      tPid2 = 321;
    }
    if (fWeightGenerator->GetPairType() == AliFemtoModelWeightGenerator::KaonPlusKaonMinus()) {
      tMass1 = 0.493677;
      tMass2 = 0.493677;
      tPid1 = 321;
      tPid2 = -321;
    }
    if (fWeightGenerator->GetPairType() == AliFemtoModelWeightGenerator::ProtonProton()) {
      tMass1 = 0.938272;
      tMass2 = 0.938272;
      tPid1 = 2212;
      tPid2 = 2212;
    }
    if (fWeightGenerator->GetPairType() == AliFemtoModelWeightGenerator::ProtonAntiproton()) {
      tMass1 = 0.938272;
      tMass2 = 0.938272;
      tPid1 = 2212;
      tPid2 = -2212;
    }
    if (fWeightGenerator->GetPairType() == AliFemtoModelWeightGenerator::PionPlusKaonPlus()) {
      tMass1 = 0.13957;
      tMass2 = 0.493677;
      tPid1 = 211;
      tPid2 = 321;
    }
    if (fWeightGenerator->GetPairType() == AliFemtoModelWeightGenerator::PionPlusKaonMinus()) {
      tMass1 = 0.13957;
      tMass2 = 0.493677;
      tPid1 = 211;
      tPid2 = -321;
    }
    if (fWeightGenerator->GetPairType() == AliFemtoModelWeightGenerator::PionPlusProton()) {
      tMass1 = 0.13957;
      tMass2 = 0.938272;
      tPid1 = 211;
      tPid2 = 2212;
    }
    if (fWeightGenerator->GetPairType() == AliFemtoModelWeightGenerator::PionPlusAntiproton()) {
      tMass1 = 0.13957;
      tMass2 = 0.938272;
      tPid1 = 211;
      tPid2 = -2212;
    }
    if (fWeightGenerator->GetPairType() == AliFemtoModelWeightGenerator::KaonPlusProton()) {
      tMass1 = 0.493677;
      tMass2 = 0.938272;
      tPid1 = 321;
      tPid2 = 2212;
    }
    if (fWeightGenerator->GetPairType() == AliFemtoModelWeightGenerator::KaonPlusAntiproton()) {
      tMass1 = 0.493677;
      tMass2 = 0.938272;
      tPid1 = 321;
      tPid2 = -2212;
    }

    if (!(aPair->Track1()->HiddenInfo())) {
      AliFemtoModelHiddenInfo *inf1 = new AliFemtoModelHiddenInfo();
      inf1->SetTrueMomentum(aPair->Track1()->Track()->P());
      inf1->SetMass(tMass1);
      inf1->SetPDGPid(tPid1);
      aPair->Track1()->SetHiddenInfo(inf1);
      delete inf1;
    }
    if (!(aPair->Track2()->HiddenInfo())) {
      AliFemtoModelHiddenInfo *inf2 = new AliFemtoModelHiddenInfo();
      inf2->SetTrueMomentum(aPair->Track2()->Track()->P());
      inf2->SetMass(tMass2);
      inf2->SetPDGPid(tPid2);
      aPair->Track2()->SetHiddenInfo(inf2);
      delete inf2;
    }
  }

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