ROOT logo
////////////////////////////////////////////////////////////////////////////////
///                                                                          ///
/// AliFemtoModelCorrFctnDirectYlm - the class for correlation function which   ///
/// uses the model framework and weight generation and saves the generated   ///
/// emission source                                                          ///
/// Authors: Adam Kisiel, kisiel@mps.ohio-state.edu                          ///
///                                                                          ///
////////////////////////////////////////////////////////////////////////////////
#ifdef __ROOT__
  ClassImp(AliFemtoModelCorrFctnDirectYlm, 1)
#endif

#include "AliFemtoModelGausLCMSFreezeOutGenerator.h"
#include "AliFemtoModelHiddenInfo.h"
#include "AliFemtoModelCorrFctnDirectYlm.h"
    
//_______________________
AliFemtoModelCorrFctnDirectYlm::AliFemtoModelCorrFctnDirectYlm(): 
  AliFemtoModelCorrFctn(),
  fCYlmTrue(0),
  fCYlmFake(0),
  fUseLCMS(0)
{
  // default constructor

  fCYlmTrue = new AliFemtoCorrFctnDirectYlm();
  fCYlmFake = new AliFemtoCorrFctnDirectYlm();
  fCYlmTrue->SetUseLCMS(fUseLCMS);
  fCYlmFake->SetUseLCMS(fUseLCMS);
}
//_______________________
AliFemtoModelCorrFctnDirectYlm::AliFemtoModelCorrFctnDirectYlm(const char *title, Int_t aMaxL, Int_t aNbins, Double_t aQinvLo, Double_t aQinvHi, int aUseLCMS=0):
  AliFemtoModelCorrFctn(title, aNbins, aQinvLo, aQinvHi),
  fCYlmTrue(0),
  fCYlmFake(0),
  fUseLCMS(aUseLCMS)
{
  // basic constructor
  char fname[1000];
  snprintf(fname, 1000, "%s%s", title, "True");
  fCYlmTrue = new AliFemtoCorrFctnDirectYlm(fname, aMaxL, aNbins, aQinvLo, aQinvHi, fUseLCMS);
  snprintf(fname, 1000, "%s%s", title, "Fake");
  fCYlmFake = new AliFemtoCorrFctnDirectYlm(fname, aMaxL, aNbins, aQinvLo, aQinvHi, fUseLCMS);
}
//_______________________
AliFemtoModelCorrFctnDirectYlm::AliFemtoModelCorrFctnDirectYlm(const AliFemtoModelCorrFctnDirectYlm& aCorrFctn):
  AliFemtoModelCorrFctn(aCorrFctn),
  fCYlmTrue(new AliFemtoCorrFctnDirectYlm(*(aCorrFctn.fCYlmTrue))),
  fCYlmFake(new AliFemtoCorrFctnDirectYlm(*(aCorrFctn.fCYlmFake))),
  fUseLCMS(0)
{
  // copy constructor
  fUseLCMS = aCorrFctn.fUseLCMS;
//   fCYlmTrue = dynamic_cast<AliFemtoCorrFctnDirectYlm*>(aCorrFctn.fCYlmTrue->Clone());
//   fCYlmFake = dynamic_cast<AliFemtoCorrFctnDirectYlm*>(aCorrFctn.fCYlmFake->Clone());
}
//_______________________
AliFemtoModelCorrFctnDirectYlm::~AliFemtoModelCorrFctnDirectYlm()
{
  // destructor
  if (fCYlmTrue) delete fCYlmTrue;
  if (fCYlmFake) delete fCYlmFake;
  if (fNumeratorTrue) delete fNumeratorTrue;
  if (fNumeratorFake) delete fNumeratorFake;
  if (fDenominator) delete fDenominator;
}

//_______________________
AliFemtoModelCorrFctnDirectYlm& AliFemtoModelCorrFctnDirectYlm::operator=(const AliFemtoModelCorrFctnDirectYlm& aCorrFctn)
{
  // assignment operator
  if (this != &aCorrFctn) {

    fUseLCMS = aCorrFctn.fUseLCMS;
    
    if (fCYlmTrue) delete fCYlmTrue;
    if (aCorrFctn.fCYlmTrue)
      fCYlmTrue = new AliFemtoCorrFctnDirectYlm(*aCorrFctn.fCYlmTrue);
    else fCYlmTrue = 0;
    
    if (fCYlmFake) delete fCYlmFake;
    if (aCorrFctn.fCYlmFake)
      fCYlmFake = new AliFemtoCorrFctnDirectYlm(*aCorrFctn.fCYlmFake);
    else fCYlmFake = 0;
    
    if (fNumeratorTrue) delete fNumeratorTrue;
    if (aCorrFctn.fNumeratorTrue)
      fNumeratorTrue = new TH1D(*aCorrFctn.fNumeratorTrue);
    else
      fNumeratorTrue = 0;
    
    if (fNumeratorFake) delete fNumeratorFake;
    if (aCorrFctn.fNumeratorFake)
      fNumeratorFake = new TH1D(*aCorrFctn.fNumeratorFake);
    else
      fNumeratorFake = 0;
    
    if (fDenominator) delete fDenominator;
    if (aCorrFctn.fDenominator)
      fDenominator = new TH1D(*aCorrFctn.fDenominator);
    else
      fDenominator = 0;
  }

  return *this;
}
//_______________________
AliFemtoString AliFemtoModelCorrFctnDirectYlm::Report()
{
  // construct report
  AliFemtoString tStr = "AliFemtoModelCorrFctnDirectYlm report";

  return tStr;
}

//_______________________
void AliFemtoModelCorrFctnDirectYlm::AddRealPair(AliFemtoPair* aPair)
{
  // add real (effect) pair
  if (fPairCut)
    if (!(fPairCut->Pass(aPair))) return;

  Double_t weight = fManager->GetWeight(aPair);
  
  if (fUseLCMS)
    fCYlmTrue->AddRealPair(aPair->QOutCMS(), aPair->QSideCMS(), aPair->QLongCMS(), weight);
  else
    fCYlmTrue->AddRealPair(aPair->KOut(), aPair->KSide(), aPair->KLong(), weight);
}
//_______________________
void AliFemtoModelCorrFctnDirectYlm::AddMixedPair(AliFemtoPair* aPair)
{
  // add mixed (background) pair
  if (fPairCut)
    if (!(fPairCut->Pass(aPair))) return;

  Double_t weight = fManager->GetWeight(aPair);

  if (fUseLCMS) {
    fCYlmTrue->AddMixedPair(aPair->QOutCMS(), aPair->QSideCMS(), aPair->QLongCMS(), 1.0);
    fCYlmFake->AddRealPair(aPair->QOutCMS(), aPair->QSideCMS(), aPair->QLongCMS(), weight);
    fCYlmFake->AddMixedPair(aPair->QOutCMS(), aPair->QSideCMS(), aPair->QLongCMS(), 1.0);
  }
  else {
    fCYlmTrue->AddMixedPair(aPair->KOut(), aPair->KSide(), aPair->KLong(), 1.0);
    fCYlmFake->AddRealPair(aPair->KOut(), aPair->KSide(), aPair->KLong(), weight);
    fCYlmFake->AddMixedPair(aPair->KOut(), aPair->KSide(), aPair->KLong(), 1.0);
  }
}
//_______________________
void AliFemtoModelCorrFctnDirectYlm::Write()
{
  // write out all the histograms
  
  fCYlmTrue->Write();
  fCYlmFake->Write();
}
//_______________________
TList* AliFemtoModelCorrFctnDirectYlm::GetOutputList()
{
  // Prepare the list of objects to be written to the output
  TList *tOutputList = AliFemtoModelCorrFctn::GetOutputList();
  tOutputList->Clear();

  TList *tListCfTrue = fCYlmTrue->GetOutputList();
    
  TIter nextListCfTrue(tListCfTrue);
  while (TObject *obj = nextListCfTrue()) {
    tOutputList->Add(obj);
  }

  TList *tListCfFake = fCYlmFake->GetOutputList();
    
  TIter nextListCfFake(tListCfFake);
  while (TObject *obj = nextListCfFake()) {
    tOutputList->Add(obj);
  }
//   tOutputList->Add(fCYlmTrue->GetOutputList());
//   tOutputList->Add(fCYlmFake->GetOutputList());

  return tOutputList;
}
//_______________________
AliFemtoModelCorrFctn* AliFemtoModelCorrFctnDirectYlm::Clone()
{
  // Clone the correlation function
  AliFemtoModelCorrFctnDirectYlm *tCopy = new AliFemtoModelCorrFctnDirectYlm(*this);
  
  return tCopy;
}
//_______________________
void AliFemtoModelCorrFctnDirectYlm::Finish()
{
  fCYlmTrue->Finish();
  fCYlmFake->Finish();
}
//_______________________
void AliFemtoModelCorrFctnDirectYlm::SetUseLCMS(int aUseLCMS)
{
  fUseLCMS = aUseLCMS;
  fCYlmTrue->SetUseLCMS(fUseLCMS);
  fCYlmFake->SetUseLCMS(fUseLCMS);
}
//_______________________
int  AliFemtoModelCorrFctnDirectYlm::GetUseLCMS()
{
  return fUseLCMS;
}

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