Skip to content

Instantly share code, notes, and snippets.

@bdrum
Last active August 12, 2022 11:15
Show Gist options
  • Save bdrum/4e15e883e39d60257fb8edcbfbf4e688 to your computer and use it in GitHub Desktop.
Save bdrum/4e15e883e39d60257fb8edcbfbf4e688 to your computer and use it in GitHub Desktop.
LM femtoscopy problem

Класс AliFemtoESDTrackCutPlusJets определен следующим образом

class AliFemtoESDTrackCutPlusJets : public AliFemtoTrackCut 
{
...
}

Наследование от класса AliFemtoTrackCut дает наследование от класса AliFemtoParticleCut, который, в свою очередь, наследуется от класса AliFemtoCutMonitorHandler.

Этот факт дает Вам право использовать метод AddCutMonitor для Вашего класса AliFemtoESDTrackCutPlusJets.

Именно таким образом Вы и должны добавлять Ваш собственный монитор – AliFemtoCutMonitorDphiDeta, через метод AddCutMonitor, который появляется автоматически у Вашего класса AliFemtoESDTrackCutPlusJets в силу механизма наследования.

То есть

// эти строчки нужны если у Вас не собран AliPhysics с Вашими классами (как у меня)
// gROOT->LoadMacro("AliFemtoCutMonitorDphiDeta.cxx+")
// gROOT->LoadMacro("AliFemtoESDTrackCutPlusJets.cxx+")

auto mon = new AliFemtoCutMonitorDphiDeta();
std::cout << mon->fPtmax << std::endl;

auto ct = new AliFemtoESDTrackCutPlusJets();
ct->AddCutMonitor(mon);

std::cout << ((AliFemtoCutMonitorDphiDeta*)ct->PassMonitor(0))->fPtmax << std::endl;

// 0

mon->fPtmax = 1234;

std::cout << ((AliFemtoCutMonitorDphiDeta*)ct->PassMonitor(0))->fPtmax << std::endl;

// 1234

Осталось вытащить данные монитора внутри класса AliFemtoESDTrackCutPlusJets. Это можно сделать точно также, с учетом того, что вместо конкретной переменной как в случае выше (ct) вам нужно использовать указатель this:

...
 auto currentMonitor = ((AliFemtoCutMonitorDphiDeta*)this->PassMonitor(0));

   double ptmax   = 0; 
   double phimax  = 0; 
   double etamax  = 0; 

   if (currentMonitor)
   {
      ptmax  = currentMonitor->fEtamax; 
      phimax = currentMonitor->fPhimax;
      etamax = currentMonitor->fPtmax;
   }

std::cout<<" fPtmax= "<<ptmax<<" fPhimax= "<<phimax<<" fEtamax= "<<etamax<<std::endl;
...

В файле ConfigFemtoAnalysis.C на забудьте поменять SetMonitor на AddCutMonitor и убрать разыменование:

dtc1etaphitpc[aniter]->SetNsigmaTPCTOF(true);
dtc1etaphitpc[aniter]->AddCutMonitor(cutPassDphiDeta[aniter]);
dtc1etaphitpc[aniter]->SetNsigma(3.0);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment