2 #include <AliAnalysisManager.h>
3 #include <AliMultiInputEventHandler.h>
4 #include <ANALYSIS/EventMixing/AliMixEventPool.h>
5 #include <ANALYSIS/EventMixing/AliMixEventCutObj.h>
6 #include <PWG2/RESONANCES/AliRsnAnalysisTask.h>
7 #include <PWG2/RESONANCES/AliRsnMiniAnalysisTask.h>
10 void AddMixingHandler ( AliMultiInputEventHandler *multiInputHandler,AliAnalysisTaskSE *task, TString format = "esd", Bool_t useMC = kFALSE,Bool_t isRsnMini=kFALSE,const Int_t mixNum = 10, TString opts = "" ) {
13 Int_t isPP = AliAnalysisManager::GetGlobalInt("rsnIsPP",valid);
16 AliRsnMiniAnalysisTask *taskRsn = (AliRsnMiniAnalysisTask *) task;
20 taskRsn->UseMultiplicity("QUALITY");
22 taskRsn->UseCentrality("V0M");
25 taskRsn->UseContinuousMix();
26 //task->UseBinnedMix();
27 taskRsn->SetNMix(mixNum);
28 taskRsn->SetMaxDiffVz(1.0);
29 taskRsn->SetMaxDiffMult(10.0);
30 taskRsn->SetMaxDiffAngle(1E20);
33 if ( !multiInputHandler ) return;
35 AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
36 const Int_t bufferSize = 1;
37 AliMixInputEventHandler *mixHandler = new AliMixInputEventHandler ( bufferSize, mixNum );
38 mixHandler->SetInputHandlerForMixing ( dynamic_cast<AliMultiInputEventHandler *> ( mgr->GetInputEventHandler() ) );
39 AliMixEventPool *evPool = new AliMixEventPool();
41 AliMixEventCutObj *multi = 0;
44 multi = new AliMixEventCutObj ( AliMixEventCutObj::kMultiplicity, 2, 102, 10 );
46 multi = new AliMixEventCutObj ( AliMixEventCutObj::kCentrality, 0, 100, 10, "V0M" );
48 AliMixEventCutObj *zvertex = new AliMixEventCutObj ( AliMixEventCutObj::kZVertex, -10, 10, 1 );
50 evPool->AddCut(multi);
51 evPool->AddCut ( zvertex );
53 // adds event pool (comment it and u will have default mixing)
54 mixHandler->SetEventPool ( evPool );
56 // mixHandler->SelectCollisionCandidates(AliVEvent::kAny);
58 // mixHandler->DoMixIfNotEnoughEvents(kFALSE);
60 multiInputHandler->AddInputEventHandler ( mixHandler );
62 // adds mixing info task
63 RsnLoadMacroFromMixHandler( "AddAnalysisTaskMixInfo.C" );
64 AddAnalysisTaskMixInfo (opts );
69 Bool_t RsnLoadMacroFromMixHandler(TString macro,TString path="") {
72 TString lego_path = AliAnalysisManager::GetGlobalStr("rsnLegoTrainPath",valid);
73 if (!valid) lego_path = "$ALICE_ROOT/PWG2/RESONANCES/macros/lego_train";
75 if (!gSystem->AccessPathName(macro.Data())) {
76 gROOT->LoadMacro(macro.Data());
77 Printf("Macro loaded from %s/%s ...",gSystem->pwd(),macro.Data());
81 if (!gSystem->AccessPathName(gSystem->ExpandPathName(Form("%s/%s",lego_path.Data(),macro.Data())))) {
82 gROOT->LoadMacro(gSystem->ExpandPathName(Form("%s/%s",lego_path.Data(),macro.Data())));
83 Printf("Macro loaded from %s ...",gSystem->ExpandPathName(Form("%s/%s",lego_path.Data(),macro.Data())));
87 Printf("Error loading %s",macro.Data());