2 // Class AliRsnAnalysisME
5 // Virtual Class derivated from AliRsnVAnalysisTaskME which will be base class
6 // for all RSN SE tasks
8 // authors: Alberto Pulvirenti (alberto.pulvirenti@ct.infn.it)
9 // Martin Vala (martin.vala@cern.ch)
12 #include "AliESDEvent.h"
13 #include "AliMCEvent.h"
14 #include "AliAODEvent.h"
15 #include "AliMultiEventInputHandler.h"
16 #include "AliRsnAnalysisME.h"
18 ClassImp(AliRsnAnalysisME)
20 //_____________________________________________________________________________
21 AliRsnAnalysisME::AliRsnAnalysisME(const char *name) :
22 AliRsnVAnalysisTaskME(name),
23 fRsnAnalysisManager(),
29 // Default constructor
31 AliDebug(AliLog::kDebug+2, "<-");
33 DefineOutput(2, TList::Class());
34 AliDebug(AliLog::kDebug+2,"->");
37 AliRsnAnalysisME::AliRsnAnalysisME(const AliRsnAnalysisME& copy) : AliRsnVAnalysisTaskME(copy),
38 fRsnAnalysisManager(copy.fRsnAnalysisManager),
40 fEventMix(copy.fEvent),
43 AliDebug(AliLog::kDebug+2, "<-");
44 AliDebug(AliLog::kDebug+2,"->");
47 //_____________________________________________________________________________
48 void AliRsnAnalysisME::RsnUserCreateOutputObjects()
51 // Creation of output objects.
52 // These are created through the utility methods in the analysis manager,
53 // which produces a list of histograms for each specified set of pairs.
54 // Each of these lists is added to the main list of this task.
57 AliDebug(AliLog::kDebug+2, "<-");
59 fOutList = new TList();
62 fRsnAnalysisManager.InitAllPairs(fOutList);
64 PostData(2, fOutList);
66 AliDebug(AliLog::kDebug+2,"->");
69 void AliRsnAnalysisME::RsnUserExec(Option_t*)
75 fTaskInfo.SetEventUsed(kFALSE);
77 AliDebug(AliLog::kDebug+2, "<-");
78 if (!CheckAndPrintEvents()) return;
80 DoMixing(GetEvent(0));
83 // if cuts are passed or not cuts were defined,
84 // update the task info...
85 fTaskInfo.SetEventUsed(kTRUE);
87 PostData(2, fOutList);
89 AliDebug(AliLog::kDebug+2,"->");
93 //_____________________________________________________________________________
94 void AliRsnAnalysisME::DoMixing(AliVEvent* ev)
100 Int_t nEvents = fInputHandler->GetBufferSize();
101 fESDEvent = dynamic_cast<AliESDEvent*>(ev);
102 fAODEvent = dynamic_cast<AliAODEvent*>(ev);
105 AliESDEvent **esdEvent = new AliESDEvent*[nEvents];
106 for (Int_t i = 0; i < nEvents; i++) {
107 esdEvent[i] = dynamic_cast<AliESDEvent*>(GetEvent(i));
109 AliWarning(Form("Null ESD event in index %d", i));
113 DoESDMixing(esdEvent[0], esdEvent[i]);
115 } else if (fAODEvent) {
116 AliAODEvent **aodEvent = new AliAODEvent*[nEvents];
117 for (Int_t i = 0; i < nEvents; i++) {
118 aodEvent[i] = dynamic_cast<AliAODEvent*>(GetEvent(i));
120 AliWarning(Form("Null AOD event in index %d", i));
124 DoAODMixing(aodEvent[0], aodEvent[i]);
131 //_____________________________________________________________________________
132 void AliRsnAnalysisME::DoAODMixing(AliAODEvent* aod1, AliAODEvent* aod2)
135 // mixing of two aod events
140 fEventMix.SetRef(aod2);
141 if (fEvent.GetMultiplicity() < 2) return;
142 if (fEventMix.GetMultiplicity() < 2) return;
144 fRsnAnalysisManager.ProcessAllPairs(&fEvent, &fEventMix);
145 PostData(2, fOutList);
147 AliDebug(AliLog::kDebug, Form("AOD tracks %d", aod1->GetNumberOfTracks()));
148 AliDebug(AliLog::kDebug, Form("AOD tracks %d", aod2->GetNumberOfTracks()));
153 //_____________________________________________________________________________
154 void AliRsnAnalysisME::DoESDMixing(AliESDEvent* esd1, AliESDEvent* esd2)
157 // mixing of two esd events
160 AliWarning(Form("ESD mixing not supported yet !!! (%p,%p)", esd1, esd2));
166 //_____________________________________________________________________________
167 void AliRsnAnalysisME::RsnTerminate(Option_t*)
173 AliDebug(AliLog::kDebug+2, "<-");
174 AliDebug(AliLog::kDebug+2,"->");
177 //_____________________________________________________________________________
178 void AliRsnAnalysisME::SetPriorProbability(AliPID::EParticleType type, Double_t p)
181 // Sets the prior probability for Realistic PID, for a
182 // given particle species.
185 if (type >= 0 && type < (Int_t)AliPID::kSPECIES) {
191 //_____________________________________________________________________________
192 void AliRsnAnalysisME::DumpPriors()
195 // Print all prior probabilities
199 for (i = 0; i < AliPID::kSPECIES; i++) {
200 AliInfo(Form("Prior probability for %10s = %3.5f", AliPID::ParticleName((AliPID::EParticleType)i), fPrior[i]));
204 //_____________________________________________________________________________
205 void AliRsnAnalysisME::GetPriorProbability(Double_t *out) const
208 // Gets all prior probabilities to out
212 for (i = 0;i < AliPID::kSPECIES;i++) {