6 #include <AliAnalysisManager.h> 7 #include <AliAnalysisDataSlot.h> 8 #include <AliAnalysisDataContainer.h> 9 #include <AliAODHandler.h> 11 #include <AliESDEvent.h> 14 #include <TInterpreter.h> 25 fNeededCorrections(0),
47 SetTitle(title && title[0] !=
'\0' ? title :
"");
52 "ESD:AliESDRun.,AliESDHeader.,AliMultiplicity.," 53 "AliESDFMD.,SPDVertex.,TPCVertex.,PrimaryVertex.";
55 DefineOutput(1, TList::Class());
56 DefineOutput(2, TList::Class());
66 Error(
"AddTaskForwardMult",
"No analysis manager to connect to.");
76 if (sumFile && sumFile[0] !=
'\0') sumOut = sumFile;
77 if (resFile && resFile[0] !=
'\0') resOut = resFile;
78 else if (sumFile && sumFile[0] !=
'\0') resOut = sumFile;
80 if (sumOut.IsNull() || sumOut.EqualTo(
"default", TString::kIgnoreCase))
81 sumOut = AliAnalysisManager::GetCommonFileName();
83 if (resOut.IsNull() || resOut.EqualTo(
"default", TString::kIgnoreCase))
84 resOut = AliAnalysisManager::GetCommonFileName();
87 mgr->ConnectInput(
this, 0, mgr->GetCommonInputContainer());
90 if (!sumOut.EqualTo(
"none", TString::kIgnoreCase)) {
91 TString sumName(Form(
"%s%s", old ?
"Forward" : GetName(),
93 AliAnalysisDataContainer* sumCon =
94 mgr->CreateContainer(sumName, TList::Class(),
95 AliAnalysisManager::kOutputContainer, sumOut);
96 mgr->ConnectOutput(
this, 1, sumCon);
99 if (!resOut.EqualTo(
"none", TString::kIgnoreCase)) {
100 TString resName(Form(
"%sResults", GetName()));
101 AliAnalysisDataContainer* resCon =
102 mgr->CreateContainer(resName, TList::Class(),
103 AliAnalysisManager::kParamContainer, resOut);
104 mgr->ConnectOutput(
this, 2, resCon);
147 else if (s.Contains(
"disp") || s.Contains(
"sat"))
150 AliWarningF(
"Unknown IPz method: %s, using normal", str);
159 TString macroPath(gROOT->GetMacroPath());
160 if (!macroPath.Contains(
"$(ALICE_PHYSICS)/PWGLF/FORWARD/analysis2")) {
161 macroPath.Append(
":$(ALICE_PHYSICS)/PWGLF/FORWARD/analysis2");
162 gROOT->SetMacroPath(macroPath);
166 const char* config =
gSystem->Which(gROOT->GetMacroPath(), mac.Data());
168 AliWarningF(
"%s not found in %s", mac.Data(), gROOT->GetMacroPath());
171 if (fTitle.IsNull()) fTitle = this->ClassName();
173 AliInfoF(
"Loading configuration of '%s' from %s", ClassName(), config);
174 gROOT->Macro(Form(
"%s((%s*)%p)", config, GetTitle(),
this));
176 AliInfoF(
"Unloading configuration script %s", config);
177 gInterpreter->UnloadFile(config);
189 DGUARD(fDebug,1,
"Doing local initialization");
201 DGUARD(fDebug,1,
"Create user ouput");
203 fList->SetName(Form(
"%sSums", GetName()));
208 dynamic_cast<AliAODHandler*
>(am->GetOutputEventHandler());
214 if (!
Book()) AliFatalF(
"Failed to book output objects for %s", GetName());
252 AliAnalysisDataSlot* slot = GetOutputSlot(no);
253 if (!slot)
return false;
255 AliAnalysisDataContainer* cont = slot->GetContainer();
256 if (!cont)
return false;
258 TFile*
file = cont->GetFile();
259 if (!file || !file->IsWritable())
return false;
261 TDirectory* save = gDirectory;
263 AliAnalysisManager::GetAnalysisManager()->GetName());
275 TList* list =
dynamic_cast<TList*
>(GetOutputData(1));
277 AliError(Form(
"No output list defined (%p)", GetOutputData(1)));
278 if (GetOutputData(1)) GetOutputData(1)->Print();
286 TString resName(Form(
"%sResults", GetName()));
297 AliErrorF(
"Failed to finalize this task (%s)", GetName());
304 AliAnalysisManager::GetAnalysisManager()
331 DGUARD(fDebug,1,
"Checking corrections 0x%x", what);
332 if (what == 0)
return true;
336 AliErrorF(
"Check corrections=0x%x not null, " 337 "but no correction manager defined!",
357 DGUARD(fDebug,1,
"Read corrections 0x%x", what);
361 AliErrorF(
"Needed/extra corrections=0x%x/0x%x not null, " 362 "but no correction manager defined!",
380 AliWarning(
"Failed to read in some corrections, making task zombie");
408 DGUARD(fDebug,1,
"Get the ESD event");
411 if (IsZombie())
return 0;
416 AliWarning(
"No ESD event found for input event");
429 AliInfoF(
"Initializing with parameters from the ESD:\n" 430 " AliESDEvent::GetBeamEnergy() ->%f\n" 431 " AliESDEvent::GetBeamType() ->%s\n" 432 " AliESDEvent::GetCurrentL3() ->%f\n" 433 " AliESDEvent::GetMagneticField()->%f\n" 434 " AliESDEvent::GetRunNumber() ->%d",
435 esd->GetBeamEnergy(),
438 esd->GetMagneticField(),
439 esd->GetRunNumber());
451 AliError(
"Failed to read corrections, making this a zombie");
455 Printf(
"Vertex axis: %p Eta axis: %p", pv, pe);
456 if (!pv) AliFatal(
"No vertex axis defined");
457 if (!pe) AliFatal(
"No eta axis defined");
464 AliError(
"Failed to initialize sub-algorithms, making this a zombie");
479 DGUARD(fDebug,3,
"Mark AOD event for storage");
482 dynamic_cast<AliAODHandler*
>(am->GetOutputEventHandler());
483 if (ah) ah->SetFillAOD(kTRUE);
485 #define PF(N,V,...) \ 486 AliForwardUtil::PrintField(N,V, ## __VA_ARGS__) 487 #define PFB(N,FLAG) \ 489 AliForwardUtil::PrintName(N); \ 490 std::cout << std::boolalpha << (FLAG) << std::noboolalpha << std::endl; \ 492 #define PFV(N,VALUE) \ 494 AliForwardUtil::PrintName(N); \ 495 std::cout << (VALUE) << std::endl; } while(false) 507 std::cout << std::setfill(
'=') << std::setw(75) <<
"=" 508 << std::setfill(
' ') << std::endl;
510 gROOT->IncreaseDirLevel();
511 PF(
"Off-line trigger mask",
"0x%0x", fOfflineTriggerMask);
513 else PF(
"No correction manager",
"");
516 gROOT->DecreaseDirLevel();
virtual Bool_t IsMC() const
virtual Bool_t ReadCorrections(const TAxis *&pe, const TAxis *&pv, Bool_t mc=false, Bool_t sat=false)
virtual Bool_t Event(AliESDEvent &esd)=0
virtual AliCorrectionManagerBase * GetManager() const
static TAxis * MakeFullIpZAxis(Int_t nCenter=20)
virtual void CreateBranches(AliAODHandler *)
virtual Bool_t Connect(const char *sumFile=0, const char *resFile=0)
virtual void Print(Option_t *option="") const
virtual void EnableCorrections(UInt_t what)
Bool_t InitCorrections(ULong_t run, UShort_t sys, UShort_t sNN, Short_t fld, Bool_t mc, Bool_t sat, Bool_t force=false)
virtual void MarkEventForStore() const
void SetIPzMethod(const char *str)
virtual Bool_t PostEvent()
Bool_t ReadRunDetails(const AliESDEvent *esd)
void Terminate(Option_t *option)
virtual TAxis * DefaultVertexAxis() const
virtual AliFMDEventInspector & GetEventInspector()=0
virtual Bool_t StoreTrainName(Int_t no)
Various utilities used in PWGLF/FORWARD.
void SetVertexMethod(EVtxType t)
virtual Bool_t Configure(const char *macro="-default-")
virtual Bool_t CheckCorrections(UInt_t what, Bool_t verbose=true) const
void SetMC(Bool_t isMC=true)
virtual Bool_t CheckCorrections(UInt_t what) const
void UserCreateOutputObjects()
virtual void SetDebug(Int_t dbg)
void CreateOutputObjects(TList *dir)
AliCorrectionManagerBase * fCorrManager
#define DGUARD(L, N, F,...)
virtual Bool_t PreData(const TAxis &vertex, const TAxis &eta)
static void PrintTask(const TObject &o)
virtual Bool_t Finalize()
virtual const TAxis * GetEtaAxis() const
virtual void Print(Option_t *option="") const
TFile * file
TList with histograms for a given trigger.
void Print(Option_t *option="") const
virtual void PreCorrections(const AliESDEvent *esd)
virtual Bool_t PreEvent()
void UserExec(Option_t *option)
Int_t GetRunNumber(TString)
virtual AliESDEvent * GetESDEvent()
virtual TAxis * DefaultEtaAxis() const
UInt_t fNeededCorrections
virtual const char * DefaultConfig() const
void SetDebug(Int_t dbg=1)
virtual const TAxis * GetVertexAxis() const
virtual void SetupForData(const TAxis &vtxAxis)