/** * @file * * @ingroup pwg2_forward_scripts */ /** * Run first pass of the analysis - that is read in ESD and produce AOD * * @param esddir ESD input directory. Any file matching the pattern * *AliESDs*.root are added to the chain * @param nEvents Number of events to process. If 0 or less, then * all events are analysed * @param proof Run in proof mode * @param mc Run over MC data * * If PROOF mode is selected, then Terminate will be run on the master node * in any case. * * * @ingroup pwg2_forward_scripts */ void MakeAOD(const char* esddir, Int_t nEvents=1000, Bool_t proof=false, Bool_t mc=false) { // --- Libraries to load ------------------------------------------- gROOT->Macro("$ALICE_ROOT/PWG2/FORWARD/analysis2/scripts/LoadLibs.C"); // --- Check for proof mode, and possibly upload pars -------------- if (proof) gROOT->Macro("$ALICE_ROOT/PWG2/FORWARD/analysis2/scripts/LoadPars.C"); // --- Our data chain ---------------------------------------------- gROOT->LoadMacro("$ALICE_ROOT/PWG2/FORWARD/analysis2/scripts/MakeESDChain.C"); TChain* chain = MakeESDChain(esddir,mc); // If 0 or less events is select, choose all if (nEvents <= 0) nEvents = chain->GetEntries(); // --- Creating the manager and handlers --------------------------- AliAnalysisManager *mgr = new AliAnalysisManager("Analysis Train", "FMD analysis train"); // --- ESD input handler ------------------------------------------- AliESDInputHandler *esdHandler = new AliESDInputHandler(); esdHandler->SetInactiveBranches("AliESDACORDE " "AliRawDataErrorLogs " "CaloClusters " "Cascades " "EMCALCells " "EMCALTrigger " "Kinks " "Cascades " "MuonTracks " "TrdTracks " "CaloClusters " "HLTGlobalTrigger"); mgr->SetInputEventHandler(esdHandler); // --- Monte Carlo handler ----------------------------------------- if (mc) { AliMCEventHandler* mcHandler = new AliMCEventHandler(); mgr->SetMCtruthEventHandler(mcHandler); mcHandler->SetReadTR(true); } // --- AOD output handler ------------------------------------------ AliAODHandler* aodHandler = new AliAODHandler(); mgr->SetOutputEventHandler(aodHandler); aodHandler->SetOutputFileName("AliAODs.root"); // --- Add tasks --------------------------------------------------- gROOT->LoadMacro("$ALICE_ROOT/PWG2/FORWARD/analysis2/AddTaskFMD.C"); gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C"); AddTaskFMD(mc); AddTaskPhysicsSelection(mc, kTRUE, kTRUE); // --- Run the analysis -------------------------------------------- TStopwatch t; if (!mgr->InitAnalysis()) { Error("MakeAOD", "Failed to initialize analysis train!"); return; } // Skip terminate if we're so requested and not in Proof or full mode mgr->SetSkipTerminate(false); // Some informative output mgr->PrintStatus(); // mgr->SetDebugLevel(3); if (mgr->GetDebugLevel() < 1 && !proof) mgr->SetUseProgressBar(kTRUE); // Run the train t.Start(); Printf("=== RUNNING ANALYSIS =================================="); mgr->StartAnalysis(proof ? "proof" : "local", chain, nEvents); t.Stop(); t.Print(); } // // EOF //