// ### Settings that make sense when using the Alien plugin
//==============================================================================
Int_t runOnData = 1; // Set to 1 if processing real data
-Int_t iCollision = 1; // 0=pp, 1=Pb-Pb
+Int_t iCollision = 0; // 0=pp, 1=Pb-Pb
Int_t run_flag = 1100; // year (2011 = 1100)
//==============================================================================
+Bool_t doCDBconnect =1;
Bool_t usePhysicsSelection = kTRUE; // use physics selection
Bool_t useTender = kFALSE; // use tender wagon
Bool_t useCentrality = kTRUE; // centrality
//==============================================================================
Int_t iAODhandler = 1; // Analysis produces an AOD or dAOD's
Int_t iESDfilter = 1; // ESD to AOD filter (barrel + muon tracks)
+Int_t iESDfilterReVtx = -1; // Request revertexing in ESD filtering
Int_t iMUONcopyAOD = 1; // Task that copies only muon events in a separate AOD (PWG3)
Int_t iJETAN = 1; // Jet analysis (PWG4)
Int_t iJETANdelta = 1; // Jet delta AODs
Int_t iPWGHFvertexing = 1; // Vertexing HF task (PWG3)
-Int_t iPWGDQJPSIfilter = 1; // JPSI filtering (PWG3)
-Int_t iPWGHFd2h = 0; // D0->2 hadrons (PWG3)
+Int_t iPWGDQJPSIfilter = 0; // JPSI filtering (PWG3)
+Int_t iPWGHFd2h = 1; // D0->2 hadrons (PWG3)
+Int_t iPWGPP =1; // high pt filter task
+Int_t iPWGLFForward = 1; // Forward mult task (PWGLF)
+Bool_t doPIDResponse = 1;
+Bool_t doPIDqa = 1; //new
// ### Configuration macros used for each module
//==============================================================================
TString configPWGHFd2h = (iCollision==0)?"$ALICE_ROOT/PWGHF/vertexingHF/ConfigVertexingHF.C"
:"$ALICE_ROOT/PWGHF/vertexingHF/ConfigVertexingHF_highmult.C";
-
+
+
+Double_t *cutsESDfilterReVtx = 0; // optional cuts for revertexing
+
// Temporaries.
void AODmerge();
void AddAnalysisTasks();
Bool_t LoadAnalysisLibraries();
Bool_t LoadLibrary(const char *);
TChain *CreateChain();
+const char *cdbPath = "raw://";
+Int_t run_number = 0;
//______________________________________________________________________________
void AODtrain(Int_t merge=0)
{
// Main analysis train macro.
- if (merge) {
+ if (merge || doCDBconnect) {
TGrid::Connect("alien://");
if (!gGrid || !gGrid->IsConnected()) {
::Error("QAtrain", "No grid connection");
printf("= Configuring analysis train for: =\n");
if (usePhysicsSelection) printf("= Physics selection =\n");
if (useTender) printf("= TENDER =\n");
- if (iESDfilter) printf("= ESD filter =\n");
+ if (iESDfilter) {
+ printf("= ESD filter =\n");
+ if (iESDfilterReVtx>=0) printf("= ESD event revertexed before filterering, algo %2d =\n",iESDfilterReVtx);
+ }
if (iMUONcopyAOD) printf("= MUON copy AOD =\n");
if (iJETAN) printf("= Jet analysis =\n");
if (iJETANdelta) printf("= Jet delta AODs =\n");
// Debugging if needed
if (useDBG) mgr->SetDebugLevel(3);
- AddAnalysisTasks();
+ AddAnalysisTasks(cdbPath);
if (merge) {
AODmerge();
mgr->InitAnalysis();
}
//______________________________________________________________________________
-void AddAnalysisTasks(){
+void AddAnalysisTasks(const char *cdb_location){
// Add all analysis task wagons to the train
AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
AliAnalysisTaskSE *tender = AddTaskTender(useV0tender);
// tender->SetDebugLevel(2);
}
-
+ //
+ // PIDResponse(JENS)
+ //
+ if (doPIDResponse) {
+ gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDResponse.C");
+ AliAnalysisTaskPIDResponse *PIDResponse = AddTaskPIDResponse();
+// PIDResponse->SelectCollisionCandidates(AliVEvent::kAny);
+ }
+
+ //
+ // PIDqa(JENS)
+ //
+ if (doPIDqa) {
+ gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPIDqa.C");
+ AliAnalysisTaskPIDqa *PIDQA = AddTaskPIDqa();
+ PIDQA->SelectCollisionCandidates(AliVEvent::kAny);
+ }
+ // CDB connection
+ //
+ if (doCDBconnect && !useTender) {
+ gROOT->LoadMacro("$ALICE_ROOT/PWGPP/PilotTrain/AddTaskCDBconnect.C");
+ AliTaskCDBconnect *taskCDB = AddTaskCDBconnect(cdb_location, run_number);
+ if (!taskCDB) return;
+ AliCDBManager *cdb = AliCDBManager::Instance();
+ cdb->SetDefaultStorage(cdb_location);
+// taskCDB->SetRunNumber(run_number);
+ }
+
if (usePhysicsSelection) {
// Physics selection task
gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
// physSelTask->GetPhysicsSelection()->SetCustomOADBObjects(oadbDefaultPbPb,0,0);
mgr->AddStatisticsTask(AliVEvent::kAny);
}
+
+
+//Jacek
+ if (iPWGPP) {
+ gROOT->LoadMacro("$ALICE_ROOT/PWGPP/macros/AddTaskFilteredTree.C");
+ AddTaskFilteredTree("FilterEvents_Trees.root");
+ }
+
// Centrality (only Pb-Pb)
- if (iCollision && useCentrality) {
+ if (useCentrality) {
gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");
AliCentralitySelectionTask *taskCentrality = AddTaskCentrality();
- taskCentrality->SelectCollisionCandidates(AliVEvent::kAny);
+ //taskCentrality->SelectCollisionCandidates(AliVEvent::kAny);
+ }
+
+// --- PWGLF - Forward (cholm@nbi.dk) -----------------------------
+ if (iPWGLFForward && usePhysicsSelection) {
+ gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/AddTaskForwardMult.C");
+ UShort_t pwglfForwardSys = 0; // iCollision+1; // pp:1, PbPb:2, pPb:3
+ UShort_t pwglfSNN = 0; // GeV, 0==unknown
+ Short_t pwglfField = 0;
+ AddTaskForwardMult(useMC && useTR, // Need track-refs
+ pwglfForwardSys, // Collision system
+ pwglfSNN,
+ pwglfField);
+ gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/AddTaskCentralMult.C");
+ AddTaskCentralMult(useMC, pwglfForwardSys, pwglfSNN, pwglfField);
}
+
+
if (iESDfilter) {
// ESD filter task configuration.
- gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskESDFilter.C");
+ gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/ESDfilter/macros/AddTaskESDFilter.C");
+ AliAnalysisTaskESDfilter *taskesdfilter = 0;
if (iMUONcopyAOD) {
printf("Registering delta AOD file\n");
mgr->RegisterExtraFile("AliAOD.Muons.root");
mgr->RegisterExtraFile("AliAOD.Dimuons.root");
- AliAnalysisTaskESDfilter *taskesdfilter = AddTaskESDFilter(useKFILTER, kTRUE, kFALSE, kFALSE /*usePhysicsSelection*/,kFALSE,AliESDpid::kTOF_T0,kTRUE,kFALSE,kFALSE,run_flag);
+ taskesdfilter = AddTaskESDFilter(useKFILTER, kTRUE, kFALSE, kFALSE /*usePhysicsSelection*/,kFALSE,kTRUE,kFALSE,kFALSE,run_flag);
} else {
- AliAnalysisTaskESDfilter *taskesdfilter = AddTaskESDFilter(useKFILTER, kFALSE, kFALSE, kFALSE /*usePhysicsSelection*/,kFALSE,AliESDpid::kTOF_T0,kTRUE,kFALSE,kFALSE,run_flag); // others
+ taskesdfilter = AddTaskESDFilter(useKFILTER, kFALSE, kFALSE, kFALSE /*usePhysicsSelection*/,kFALSE,kTRUE,kFALSE,kFALSE,run_flag); // others
}
+ if (iESDfilterReVtx>=0 && taskesdfilter) taskesdfilter->SetRefitVertexTracks(iESDfilterReVtx, cutsESDfilterReVtx);
}
// ********** PWG3 wagons ******************************************************
Bool_t kIsPbPb = (iCollision==0)?false:true; // can be more intlligent checking the name of the data set
TString kDefaultJetBackgroundBranch = "";
TString kJetSubtractBranches = "";
- UInt_t kHighPtFilterMask = 128;// from esd filter
- UInt_t iPhysicsSelectionFlag = AliVEvent::kMB;
+ UInt_t kHighPtFilterMask = 272;// from esd filter
+ UInt_t iPhysicsSelectionFlag = 0;
if (iJETAN) {
gROOT->LoadMacro("$ALICE_ROOT/PWGJE/macros/AddTaskJets.C");
// Default jet reconstructor running on ESD's
}
}
}
-
//______________________________________________________________________________
Bool_t LoadCommonLibraries()
{
Bool_t LoadAnalysisLibraries()
{
// Load common analysis libraries.
- if (useTender) {
+ if (useTender || doCDBconnect) {
if (!LoadLibrary("TENDER") ||
!LoadLibrary("TENDERSupplies")) return kFALSE;
}
+ // CDBconnect
+ if (doCDBconnect && !useTender) {
+ if (!LoadLibrary("PWGPP")) return kFALSE;
+ }
+
if (iESDfilter || iPWGMuonTrain) {
if (!LoadLibrary("PWGmuon")) return kFALSE;
}
!LoadLibrary("siscone") ||
!LoadLibrary("SISConePlugin") ||
!LoadLibrary("FASTJETAN")) return kFALSE;
- }
+ }
+ // PWG2 FORWARD
+ if (iPWGLFForward) {
+ //if (!LoadLibrary("PWGLFforward", mode, kTRUE)) return kFALSE;
+ if (!LoadLibrary("PWGLFforward2")) return kFALSE;
+ }
+
// PWG3 Vertexing HF
- if (iPWGHFvertexing || iPWG3d2h) {
- if (!LoadLibrary("PWG3base") ||
+ if (iPWGHFvertexing || iPWGHFd2h) {
+ if (!LoadLibrary("PWGflowBase") ||
+ !LoadLibrary("PWGflowTasks") ||
!LoadLibrary("PWGHFvertexingHF")) return kFALSE;
- }
+ }
+ // if (iPWGHFvertexing || iPWG3d2h) {
+ // if (!LoadLibrary("PWG3base") ||
+ // !LoadLibrary("PWGHFvertexingHF")) return kFALSE;
+ // }
// PWG3 dielectron
if (iPWGDQJPSIfilter) {
if (!LoadLibrary("PWGDQdielectron")) return kFALSE;
TStopwatch timer;
timer.Start();
TString outputDir = "wn.xml";
- TString outputFiles = "EventStat_temp.root,AODQA.root,AliAOD.root,AliAOD.VertexingHF.root,";
- outputFiles += "AliAOD.Muons.root,AliAOD.Jets.root";
+ TString outputFiles = "EventStat_temp.root,AODQA.root,AliAOD.root,AliAOD.VertexingHF.root,FilterEvents_Trees.root,AliAOD.Muons.root,AliAOD.Jets.root";
TString mergeExcludes = "";
TObjArray *list = outputFiles.Tokenize(",");
TIter *iter = new TIter(list);
merged = AliAnalysisAlien::MergeOutput(outputFile, outputDir, 10, 0);
if (!merged) {
printf("ERROR: Cannot merge %s\n", outputFile.Data());
- return;
+ continue;
}
}
// all outputs merged, validate