void AddMixingHandler ( AliMultiInputEventHandler *multiInputHandler,TString format = "esd", Bool_t useMC = kFALSE, TString opts = "" ) { const Int_t bufferSize = 2; const Int_t mixNum = 1; if ( !multiInputHandler ) return; AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); AliMixInputEventHandler *mixHandler = new AliMixInputEventHandler ( bufferSize, mixNum ); mixHandler->SetInputHandlerForMixing ( dynamic_cast<AliMultiInputEventHandler *> ( mgr->GetInputEventHandler() ) ); AliMixEventPool *evPool = new AliMixEventPool(); AliMixEventCutObj *multi = new AliMixEventCutObj ( AliMixEventCutObj::kMultiplicity, 2, 102, 10 ); // AliMixEventCutObj *zvertex = new AliMixEventCutObj ( AliMixEventCutObj::kZVertex, -10, 10, 1 ); // AliMixEventCutObj *centrality = new AliMixEventCutObj(AliMixEventCutObj::kCentrality, 0, 20, 10, "V0M"); // AliMixEventCutObj *multi = new AliMixEventCutObj(AliMixEventCutObj::kMultiplicity, 2, 102, 10); // AliMixEventCutObj *zvertex = new AliMixEventCutObj(AliMixEventCutObj::kZVertex, -5, 5, 1); // // AliMixEventCutObj *multi = new AliMixEventCutObj(AliMixEventCutObj::kMultiplicity, 2, 10002, 1000); // AliMixEventCutObj *zvertex = new AliMixEventCutObj(AliMixEventCutObj::kZVertex, -10, 10, 1); // // AliMixEventCutObj *centrality = new AliMixEventCutObj ( AliMixEventCutObj::kCentrality, 0, 100, 10, "V0M" ); AliMixEventCutObj *zvertex = new AliMixEventCutObj ( AliMixEventCutObj::kZVertex, -10, 10, 1 ); // evPool->AddCut(centrality); evPool->AddCut(multi); evPool->AddCut ( zvertex ); // adds event pool (comment it and u will have default mixing) mixHandler->SetEventPool ( evPool ); // mixHandler->SelectCollisionCandidates(AliVEvent::kAny); // mixHandler->SelectCollisionCandidates(AliVEvent::kAnyINT); // mixHandler->SelectCollisionCandidates(AliVEvent::kMB); mixHandler->SelectCollisionCandidates(AliVEvent::kMUSPB); // mixHandler->DoMixIfNotEnoughEvents(kFALSE); multiInputHandler->AddInputEventHandler ( mixHandler ); // adds mixing info task gROOT->LoadMacro ( "AddAnalysisTaskMixInfo.C" ); AddAnalysisTaskMixInfo (opts); }
void AddMixingHandler ( AliMultiInputEventHandler *multiInputHandler,AliAnalysisTaskSE *task, TString format = "esd", Bool_t useMC = kFALSE,Bool_t isRsnMini=kFALSE,const Int_t mixNum = 10, TString opts = "" ) { Bool_t valid = kTRUE; Int_t isPP = AliAnalysisManager::GetGlobalInt("rsnIsPP",valid); if (isRsnMini) { AliRsnMiniAnalysisTask *taskRsn = (AliRsnMiniAnalysisTask *) task; // settings if (isPP) { // taskRsn->UseMultiplicity("TRACKS"); taskRsn->UseMultiplicity("QUALITY"); taskRsn->SetMaxDiffMult(1.0); } else { taskRsn->UseCentrality("V0M"); taskRsn->SetMaxDiffMult(10.0); } // set mixing taskRsn->UseContinuousMix(); //task->UseBinnedMix(); taskRsn->SetNMix(mixNum); taskRsn->SetMaxDiffVz(1.0); // taskRsn->SetMaxDiffAngle(30.0 * TMath::DegToRad()); } else { if ( !multiInputHandler ) return; AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager(); const Int_t bufferSize = 1; AliMixInputEventHandler *mixHandler = new AliMixInputEventHandler ( bufferSize, mixNum ); mixHandler->SetInputHandlerForMixing ( dynamic_cast<AliMultiInputEventHandler *> ( mgr->GetInputEventHandler() ) ); AliMixEventPool *evPool = new AliMixEventPool(); AliMixEventCutObj *multi = 0; if (isPP) { multi = new AliMixEventCutObj ( AliMixEventCutObj::kMultiplicity, 2, 102, 10 ); } else { multi = new AliMixEventCutObj ( AliMixEventCutObj::kCentrality, 0, 100, 10, "V0M" ); } AliMixEventCutObj *zvertex = new AliMixEventCutObj ( AliMixEventCutObj::kZVertex, -10, 10, 1 ); evPool->AddCut(multi); evPool->AddCut ( zvertex ); // adds event pool (comment it and u will have default mixing) mixHandler->SetEventPool ( evPool ); // mixHandler->SelectCollisionCandidates(AliVEvent::kAny); // mixHandler->DoMixIfNotEnoughEvents(kFALSE); multiInputHandler->AddInputEventHandler ( mixHandler ); // adds mixing info task RsnLoadMacroFromMixHandler( "AddAnalysisTaskMixInfo.C" ); AddAnalysisTaskMixInfo (opts ); } }