// -> event_stat_outer.root trending_outer.root 145230_145230_0_132897.stat
#include "Riostream.h"
void LoadLibraries();
-void AddAnalysisTasks(const char *);
+void AddAnalysisTasks(const char *, const char *);
void QAmerge(const char *,const char *, Int_t);
Int_t iCollisionType = 0; // 0=pp, 1=PbPb
// Trigger mask.
UInt_t kTriggerInt = AliVEvent::kAnyINT;
-UInt_t kTriggerMuonBarell = AliVEvent::kMUU7;
-UInt_t kTriggerEMC = AliVEvent::kEMC7 | AliVEvent::kEMCEJE | AliVEvent::kEMCEGA;
+UInt_t kTriggerMuonBarrel = AliVEvent::kMUU7 | AliVEvent::kMuonUnlikeLowPt8 | AliVEvent::kMuonUnlikeLowPt0;
+UInt_t kTriggerEMC = AliVEvent::kEMC7 | AliVEvent::kEMC8 | AliVEvent::kEMCEJE | AliVEvent::kEMCEGA;
UInt_t kTriggerHM = AliVEvent::kHighMult;
// Main trigger mask used:
UInt_t kTriggerMask = kTriggerInt;
Bool_t doCDBconnect = 1;
Bool_t doEventStat = 1;
-Bool_t doCentrality = 1;
+Bool_t doCentrality = 0;
Bool_t doQAsym = 1;
Bool_t doVZERO = 1; // there is a 2nd file
Bool_t doVZEROPbPb = 1;
void QAtrain_duo(const char *suffix="", Int_t run = 0,
const char *xmlfile = "wn.xml",
- Int_t stage = 0) /*0 = QA train, 1...n - merging stage*/
+ Int_t stage = 0, /*0 = QA train, 1...n - merging stage*/
+ const char *cdb = "raw://")
+// const char *cdb = "local://$ALICE_ROOT/OCDB")
{
run_number = run;
+ TString ss(suffix);
+ ss.ToLower();
+ Bool_t ibarrel = (ss.Contains("barrel"))?kTRUE:kFALSE;
- TGrid::Connect("alien://");
- if (!gGrid || !gGrid->IsConnected()) {
- ::Error("QAtrain", "No grid connection");
- return;
- }
+ TString cdbString(cdb);
+ if (cdbString.Contains("raw://"))
+ {
+ TGrid::Connect("alien://");
+ if (!gGrid || !gGrid->IsConnected()) {
+ ::Error("QAtrain", "No grid connection");
+ return;
+ }
+ }
// Set temporary merging directory to current one
gSystem->Setenv("TMPDIR", gSystem->pwd());
// Set temporary compilation directory to current one
mgr->SetRunFromPath(run_number);
// Input handler
AliESDInputHandlerRP *esdHandler = new AliESDInputHandlerRP();
- esdHandler->SetReadFriends(kTRUE);
- esdHandler->SetActiveBranches("ESDfriend");
+ if (ibarrel) {
+ esdHandler->SetReadFriends(kTRUE);
+ esdHandler->SetActiveBranches("ESDfriend");
+ }
mgr->SetInputEventHandler(esdHandler);
mgr->SetDebugLevel(debug_level);
+ mgr->SetFileInfoLog("fileinfo.log");
// AnalysisTasks
- AddAnalysisTasks(suffix);
+ AddAnalysisTasks(suffix, cdb);
if (stage>0) {
QAmerge(suffix, xmlfile, stage);
return;
gSystem->Load("libPWGGACaloTrackCorrelations");
gSystem->Load("libPWGGACaloTasks");
gSystem->Load("libPWGGAPHOSTasks");
+ gSystem->Load("libPWGTools");
+ gSystem->Load("libPWGEMCAL");
gSystem->Load("libPWGGAEMCALTasks");
}
if(doMUON || doMUONTrig) {
}
}
-void AddAnalysisTasks(const char *suffix)
+void AddAnalysisTasks(const char *suffix, const char *cdb_location)
{
TString ss(suffix);
ss.ToLower();
Bool_t ibarrel = (ss.Contains("barrel"))?kTRUE:kFALSE;
+ Bool_t iall = ss.IsNull();
AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
mgr->SetCommonFileName(Form("QAresults%s.root",suffix));
// Statistics task
//
if (doCDBconnect) {
gROOT->LoadMacro("$ALICE_ROOT/PWGPP/PilotTrain/AddTaskCDBconnect.C");
- AliTaskCDBconnect *taskCDB = AddTaskCDBconnect();
+ AliTaskCDBconnect *taskCDB = AddTaskCDBconnect(cdb_location, run_number);
+// AliTaskCDBconnect *taskCDB = AddTaskCDBconnect();
if (!taskCDB) return;
AliCDBManager *cdb = AliCDBManager::Instance();
- cdb->SetDefaultStorage("raw://");
- taskCDB->SetRunNumber(run_number);
+ cdb->SetDefaultStorage(cdb_location);
+// taskCDB->SetRunNumber(run_number);
}
//
// Centrality (A. Toia)
//
if (doCentrality) {
- if (!iCollisionType) {
- printf("Disabling centrality task for p-p\n");
- doCentrality = kFALSE;
- } else {
+// if (!iCollisionType) {
+// printf("Disabling centrality task for p-p\n");
+// doCentrality = kFALSE;
+// } else {
gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");
AliCentralitySelectionTask *taskCentrality = AddTaskCentrality();
- }
+ AliAnalysisDataContainer *centralityout = (AliAnalysisDataContainer*)mgr->GetOutputs()->FindObject("CentralityStat");
+ centralityout->SetFileName(Form("EventStat_temp%s.root", suffix));
+// }
}
// Vertexing (A. Dainese)
//
- if (doVertex) {
+ if (doVertex && (ibarrel || iall)) {
gROOT->LoadMacro("$ALICE_ROOT/PWGPP/macros/AddTaskVertexESD.C");
AliAnalysisTaskVertexESD* taskvertexesd = AddTaskVertexESD(kFALSE, kTriggerMask);
taskvertexesd->SelectCollisionCandidates(kTriggerMask);
// TPC QA (E. Sicking)
//
- if (doQAsym) {
+ if (doQAsym && (ibarrel || iall)) {
// offline trigger in AddTask
gROOT->LoadMacro("$ALICE_ROOT/PWGPP/PilotTrain/AddTaskQAsym.C");
- AliAnalysisTaskSE * taskqasim = AddTaskQAsym(0, kTriggerMask, kTriggerHM, kTriggerEMC, kTriggerMuonBarell);
+ AliAnalysisTaskSE * taskqasim = AddTaskQAsym(0, kTriggerMask, kTriggerHM, kTriggerEMC, kTriggerMuonBarrel);
}
//
// VZERO QA (C. Cheshkov)
//
- if (doVZERO && ibarrel) {
+ if (doVZERO && (ibarrel || iall)) {
gROOT->LoadMacro("$ALICE_ROOT/PWGPP/PilotTrain/AddTaskVZEROQA.C");
AliAnalysisTaskSE * taskv0qa = AddTaskVZEROQA(0);
// taskv0qa->SelectCollisionCandidates();
+ gROOT->LoadMacro("$ALICE_ROOT/PWGPP/PilotTrain/AddTaskVZEROQATrig.C");
+ AliAnaVZEROQA *taskv0qatrig = AddTaskVZEROQATrig(0);
+ taskv0qatrig->SelectCollisionCandidates(AliVEvent::kINT8);
+
}
- if (doVZEROPbPb && iCollisionType==1) {
+ if (doVZEROPbPb && iCollisionType==0) {
gROOT->LoadMacro("$ALICE_ROOT/PWGPP/VZERO/AddTaskVZEROPbPb.C");
- AliAnaVZEROPbPb* taskV0PbPb = (AliAnaVZEROPbPb*)AddTaskVZEROPbPb(0);
+ AliAnaVZEROPbPb* taskV0PbPb = (AliAnaVZEROPbPb*)AddTaskVZEROPbPb(run_number);
// taskV0PbPb->SetClassesNames("CTRUE-,C0HWU-,CPBI2WU_B1-,CPBI2_B1-,CPBI1WU-,CPBI1-,CVHNWU-,CVHN-,CVLNWU-,CVLN-");
// taskV0PbPb->SetClassesNames("CTRUE-,C0HWU-,CPBI2WU,CPBI2,CPBI1WU-,CPBI1-,CVHNWU,CVHN,CVLNWU,CVLN");
// taskV0PbPb->SetClassesNames("CTRUE-,C0HWU-,CPBI2WU-,CPBI2-,CPBI2WU_B1-,CPBI2_B1-,CPBI1WU-,CPBI1-,CVHNWU-,CVHN-,CVHN_R2-,CVHNWU_R2-,CVLNWU-,CVLN-,CVLN_B2-,CVLNWU_B2-");
// taskV0PbPb->SetClassesNames("CTRUE-,C0HWU-,CPBI2WU-,CPBI2-,CPBI2WU_B1-,CPBI2_B1-,CPBI1WU-,CPBI1-,CVHNWU-,CVHN-,CVHN_R2-,CVHNWU_R2-,CVLNWU-,CVLN-,CVLN_R1-,CVLN_B2-,CVLNWU_R1-,CVLNWU_B2-");
- taskV0PbPb->SetClassesNames("CTRUE-,C0HWU-,CPBI2WU-,CPBI2-,CPBI2WU_B1-,CPBI2_B1-,CPBI1WU-,CPBI1-,CVHNWU-,CVHN-,CVHN_R2-,CVHNWU_R2-,CVLNWU-,CVLN-,CVLN_R1-,CVLN_B2-,CVLNWU_R1-,CVLNWU_B2-,CSEMI_R1-,CSEMIWU_R1-,CCENT_R2-,CCENTWU_R2-");
+// taskV0PbPb->SetClassesNames("CTRUE-,C0HWU-,CPBI2WU-,CPBI2-,CPBI2WU_B1-,CPBI2_B1-,CPBI1WU-,CPBI1-,CVHNWU-,CVHN-,CVHN_R2-,CVHNWU_R2-,CVLNWU-,CVLN-,CVLN_R1-,CVLN_B2-,CVLNWU_R1-,CVLNWU_B2-,CSEMI_R1-,CSEMIWU_R1-,CCENT_R2-,CCENTWU_R2-");
}
//
// TPC (Jacek Otwinowski & Michael Knichel)
// Optionally friends information can be switched off by setting the 2st argument
// to false
// Optionally highMult axis can be used by setting the 3st argument to true (for PbPb)
- if (doTPC && ibarrel) {
+ if (doTPC && (ibarrel || iall)) {
gROOT->LoadMacro("$ALICE_ROOT/PWGPP/TPC/macros/AddTaskPerformanceTPCdEdxQA.C");
AliPerformanceTask *tpcQA = 0;
if (iCollisionType) {
}
// HLT (Alberica Toia)
- if (doHLT && ibarrel) {
+ if (doHLT && (ibarrel || iall)) {
gROOT->LoadMacro("$ALICE_ROOT/PWGPP/TPC/macros/AddTaskPerformanceTPCdEdxQA.C");
AliPerformanceTask *hltQA = AddTaskPerformanceTPCdEdxQA(kFALSE, kTRUE, kFALSE,0,kTRUE);
hltQA->SelectCollisionCandidates(kTriggerMask);
//
// SPD (A. Mastroserio)
//
- if (doSPD) {
+ if (doSPD && (ibarrel || iall)) {
gROOT->LoadMacro("$ALICE_ROOT/PWGPP/PilotTrain/AddTaskSPDQA.C");
AliAnalysisTaskSPD* taskspdqa = (AliAnalysisTaskSPD*)AddTaskSPDQA();
// Request from Annalisa
if (iCollisionType) taskspdqa->SetHeavyIonMode();
taskspdqa->SelectCollisionCandidates(kTriggerMask);
- taskspdqa->SetOCDBInfo(run_number, "raw://");
+ taskspdqa->SetOCDBInfo(run_number, cdb_location);
}
//
// SDD (F. Prino)
//
- if (doSDD) {
+ if (doSDD && (ibarrel || iall)) {
gROOT->LoadMacro("$ALICE_ROOT/PWGPP/PilotTrain/AddSDDPoints.C");
AliAnalysisTaskSE* tasksdd = AddSDDPoints();
tasksdd->SelectCollisionCandidates(kTriggerMask);
//
// SSD dEdx (Marek Chojnacki)
//
- if (doSSDdEdx) {
+ if (doSSDdEdx && (ibarrel || iall)) {
gROOT->LoadMacro("$ALICE_ROOT/PWGPP/PilotTrain/AddTaskdEdxSSDQA.C");
AliAnalysisTaskSE* taskssddedx = AddTaskdEdxSSDQA();
taskssddedx->SelectCollisionCandidates(kTriggerMask);
//
// ITS
//
- if (doITS) {
+ if (doITS && (ibarrel || iall)) {
// hardcoded non-zero trigger mask
gROOT->LoadMacro("$ALICE_ROOT/PWGPP/macros/AddTaskPerformanceITS.C");
AliAnalysisTaskITSTrackingCheck *itsQA = 0;
//
// ITS saTracks, align (F.Prino)
//
- if (doITSsaTracks) {
+ if (doITSsaTracks && (ibarrel || iall)) {
// offline trigger in AddTask
gROOT->LoadMacro("$ALICE_ROOT/PWGPP/macros/AddTaskITSsaTracks.C");
AliAnalysisTaskITSsaTracks *itssaTracks = AddTaskITSsaTracks(kFALSE,kFALSE);
itssaTracks->SelectCollisionCandidates(kTriggerMask);
}
- if (doITSalign) {
+ if (doITSalign && (ibarrel || iall)) {
// no offline trigger selection
gROOT->LoadMacro("$ALICE_ROOT/PWGPP/macros/AddTaskITSAlign.C");
- AliAnalysisTaskITSAlignQA *itsAlign = AddTaskITSAlign(0,2011);
+ AliAnalysisTaskITSAlignQA *itsAlign = AddTaskITSAlign(0,2012);
}
//
// TRD (Alex Bercuci, M. Fasel)
//
- if(doTRD && ibarrel) {
+ if(doTRD && (ibarrel || iall)) {
// no offline trigger selection
gROOT->LoadMacro("$ALICE_ROOT/PWGPP/macros/AddTrainPerformanceTRD.C");
// steer individual TRD tasks
//
// ZDC (Chiara Oppedisano)
//
- if(doZDC && ibarrel) {
+ if(doZDC && (ibarrel || iall)) {
// hardcoded kMB trigger mask
gROOT->LoadMacro("$ALICE_ROOT/PWGPP/ZDC/AddTaskZDCQA.C");
AliAnalysisTaskSE *taskZDC = AddTaskZDCQA();
//
if(doCALO) {
+ // - In case of MC analysis, it skips the triggered events wagon (given that
+ //the normal wagon is always suffixed as "default")
+ //- No need to pass the type of data
+ //- No need to specify the year. In principle the year is only needed when
+ //setting the size of some histograms (change in number of SM along the years),
+ //I do not know how to access automatically the run number when the histograms
+ // are created in the UserCreateOutput. By default I set them to the maximum
+ //expected size, but I still let the possibility to check the year.
+
+ //So the way to initialize the task in trunk is now
+
+ //AddTaskCalorimeterQA(Bool_t kSimulation = kFALSE,
+ // const char *suffix="default",
+ // TString outputFile = "",
+ // Int_t year = 2012,
+ // Bool_t kPrintSettings = kFALSE)
+
+ //So, in principle only the first 2 need to be specified.
+
+
gROOT->LoadMacro("$ALICE_ROOT/PWGGA/CaloTrackCorrelations/macros/QA/AddTaskCalorimeterQA.C");
- AliAnalysisTaskCaloTrackCorrelation *taskCaloQA = AddTaskCalorimeterQA("ESD", 2011, kFALSE, kFALSE);
+ AliAnalysisTaskCaloTrackCorrelation *taskCaloQA = AddTaskCalorimeterQA(kFALSE, "default");
taskCaloQA->SetDebugLevel(0);
// offline mask set in AddTask to kMB
taskCaloQA->SelectCollisionCandidates(kTriggerMask);
// Add a new calo task with EMC1 trigger only
- taskCaloQA = AddTaskCalorimeterQA("ESD", 2011, kFALSE, kFALSE, "", "EMC7");
+ taskCaloQA = AddTaskCalorimeterQA(kFALSE, "trigEMC");
taskCaloQA->SetDebugLevel(0);
taskCaloQA->SelectCollisionCandidates(kTriggerEMC);
}
// no offline trigger selection
gROOT->LoadMacro("$ALICE_ROOT/PWGPP/macros/AddTaskMTRchamberEfficiency.C");
AliAnalysisTaskTrigChEff *taskMuonTrig = AddTaskMTRchamberEfficiency();
+// taskMuonTrig->GetMuonTrackCuts()->SetCustomParamFromRun(160000,2);
}
//
// Impact parameter resolution (xianbao.yuan@pd.infn.it, andrea.dainese@pd.infn.it)
//
- if (doImpParRes && ibarrel) {
+ if (doImpParRes && (ibarrel || iall)) {
gROOT->LoadMacro("$ALICE_ROOT/PWGPP/macros/AddTaskImpParRes.C");
AliAnalysisTaskSE* taskimpparres=0;
if(iCollisionType==0) {
if (doMUON) {
// trigger analysis internal
gROOT->LoadMacro("$ALICE_ROOT/PWGPP/PilotTrain/AddTaskMuonQA.C");
- AliAnalysisTaskSE* taskmuonqa= AddTaskMuonQA();
+ AliAnalysisTaskMuonQA* taskmuonqa= AddTaskMuonQA();
+// taskmuonqa->GetTrackCuts()->SetCustomParamFromRun(160000,2);
}
//
// TOF (Francesca Bellini)
//
- if (doTOF && ibarrel) {
+ if (doTOF && (ibarrel || iall)) {
gROOT->LoadMacro("$ALICE_ROOT/PWGPP/TOF/AddTaskTOFQA.C");
- AliAnalysisTaskTOFqa *tofQA = AddTaskTOFQA();
+ AliAnalysisTaskTOFqa *tofQA = AddTaskTOFQA(kTRUE);
tofQA->SelectCollisionCandidates(kTriggerMask);
}
//
// PIDResponse(JENS)
//
- if (doPIDResponse && ibarrel) {
+ if (doPIDResponse && (ibarrel || iall)) {
gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
AliAnalysisTaskPIDResponse *PIDResponse = AddTaskPIDResponse();
PIDResponse->SelectCollisionCandidates(kTriggerMask);
//
// PIDqa(JENS)
//
- if (doPIDqa && ibarrel) {
+ if (doPIDqa && (ibarrel || iall)) {
gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDqa.C");
AliAnalysisTaskPIDqa *PIDQA = AddTaskPIDqa();
PIDQA->SelectCollisionCandidates(kTriggerMask);
//
// HMPID QA (Giacomo Volpe)
//
- if (doHMPID && ibarrel) {
+ if (doHMPID && (ibarrel || iall)) {
gROOT->LoadMacro("$ALICE_ROOT/PWGPP/HMPID/AddTaskHmpidQA.C");
AliAnalysisTaskSE* taskhmpidqa= AddTaskHmpidQA(kFALSE);
// offline mask set in AddTask to kMB
// T0 QA (Alla Mayevskaya)
- if (doT0 && ibarrel) {
+ if (doT0 && (ibarrel || iall)) {
// no offline trigger selection
gROOT->LoadMacro("$ALICE_ROOT/PWGPP/T0/AddTaskT0QA.C");
AliT0AnalysisTaskQA* taskt0qa= AddTaskT0QA();
taskt0qa->SelectCollisionCandidates(kTriggerMask);
}
// FMD QA (Christian Holm Christiansen)
- if (doFMD && ibarrel) {
+ if (doFMD && (ibarrel || iall)) {
gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/AddTaskForwardQA.C");
// Parameters: usemc, usecentrality
- AliAnalysisTaskSE *forwardQA = (AliAnalysisTaskSE *)AddTaskForwardQA(kFALSE, kFALSE);
+ AliForwardQATask *forwardQA = (AliAnalysisTaskSE *)AddTaskForwardQA(kFALSE, kFALSE);
+ forwardQA->SetDebug(0);
// No offline trigger config. needed (see #84077)
}
//
taskPHOSCellQA2->SelectCollisionCandidates(AliVEvent::kPHI7);
taskPHOSCellQA2->GetCaloCellsQA()->SetClusterEnergyCuts(0.3,0.3,1.0);
// Pi0 QA fo PbPb
- if (iCollisionType) {
+ if (iCollisionType == 0) {
gROOT->LoadMacro("$ALICE_ROOT/PWGGA/PHOSTasks/PHOS_PbPbQA/macros/AddTaskPHOSPbPb.C");
AliAnalysisTaskPHOSPbPbQA* phosPbPb = AddTaskPHOSPbPbQA(0);
}
if (doEMCAL) {
gROOT->LoadMacro("$ALICE_ROOT/PWGGA/EMCALTasks/macros/AddTaskEMCALTriggerQA.C");
AliAnalysisTaskEMCALTriggerQA *emctrig = AddTaskEMCALTriggerQA();
+// emctrig->GetRecoUtils()->SwitchOffBadChannelsRemoval();
}
//
// FLOW and BF QA (C.Perez && A.Rodriguez)
//
- if (doFBFqa && ibarrel) {
+ if (doFBFqa && (ibarrel || iall)) {
gROOT->LoadMacro("$ALICE_ROOT/PWGPP/macros/AddTaskFBFqa.C");
AliAnalysisTaskSE *qaFBFMB = (AliAnalysisTaskSE*) AddTaskFBFqa("qaFBFmb",kFALSE);
qaFBFMB->SelectCollisionCandidates(AliVEvent::kMB);
merged = AliAnalysisAlien::MergeOutput(outputFile, outputDir, 10, stage);
if (!merged && !outputFile.Contains("RecoQAresults")) {
printf("ERROR: Cannot merge %s\n", outputFile.Data());
- return;
+ continue;
}
}
// read the analysis manager from file
+ TString infolog = "fileinfo.log";
+ AliAnalysisAlien::MergeInfo(infolog, dir);
if (!outputDir.Contains("Stage")) {
ofstream out;
out.open("outputs_valid", ios::out);
mgr->PrintStatus();
AliLog::SetGlobalLogLevel(AliLog::kError);
TTree *tree = NULL;
+ gROOT->cd();
mgr->StartAnalysis("gridterminate", tree);
if (strlen(suffix)) {
if (gSystem->Exec(Form("mv trending.root trending%s.root", suffix)))