void Load(const char* taskName, Bool_t debug)
{
TString compileTaskName;
- compileTaskName.Form("%s.cxx++", taskName);
+ compileTaskName.Form("%s.cxx+", taskName);
if (debug)
compileTaskName += "g";
AliLog::SetClassDebugLevel(taskName, AliLog::kWarning);
}
-void run(Int_t runWhat, const Char_t* data, Int_t nRuns=20, Int_t offset=0, Bool_t aDebug = kFALSE, Int_t aProof = kFALSE, Bool_t mc = kTRUE, const char* option = "")
+void run(Int_t runWhat, const Char_t* data, Int_t nRuns=20, Int_t offset=0, Bool_t aDebug = kFALSE, Int_t aProof = kFALSE, Int_t requiredData = 1, const char* option = "")
{
// runWhat options: 0 = AlidNdEtaTask
// 1 = AlidNdEtaCorrectionTask
// aProof option: 0 no proof
// 1 proof with chain
// 2 proof with dataset
-
+ //
+ // requiredData option: 0 = only ESD
+ // 1 = ESD+MC
+ // 2 = RAW (ESD+check on event type)
+ //
+ // option is passed to the task(s)
+ // option SAVE is removed and results in moving the output files to maps/<ds name>/<trigger>/<det>
+ //
+
TString taskName;
if (runWhat == 0 || runWhat == 2)
{
if (runWhat == 1 || runWhat == 2)
{
Printf("Running AlidNdEtaCorrectionTask");
- if (!mc)
+ if (requiredData != 1)
{
Printf("AlidNdEtaCorrectionTask needs MC. Exiting...");
return;
if (aProof)
{
- TProof::Open("lxb6046");
- //gProof->SetParallel(1);
+ TProof::Open("alicecaf");
+ Bool_t fullAliroot = kFALSE;
// Enable the needed package
if (1)
{
gProof->UploadPackage("$ALICE_ROOT/ANALYSISalice");
gProof->EnablePackage("$ALICE_ROOT/ANALYSISalice");
}
+ else if (!fullAliroot)
+ {
+ gProof->UploadPackage("$ALICE_ROOT/AF-v4-18-12-AN.par");
+ gProof->EnablePackage("AF-v4-18-12-AN");
+ }
else
{
- gProof->UploadPackage("/afs/cern.ch/alice/caf/sw/ALICE/PARs/v4-14-Release/AF-v4-14");
- gProof->EnablePackage("/afs/cern.ch/alice/caf/sw/ALICE/PARs/v4-14-Release/AF-v4-14");
+ // needed if ITS recpoints are accessed, see AlidNdEtaTask, FULLALIROOT define statement
+ gProof->UploadPackage("$ALICE_ROOT/v4-18-15-AN-all.par");
+ gProof->EnablePackage("v4-18-15-AN-all");
+
+ gProof->Exec("TGrid::Connect(\"alien://\")", kTRUE);
+
+ // TODO add this to loadlibs.C
+ gProof->Exec("gSystem->Load(\"libXMLParser\")", kTRUE);
}
gProof->UploadPackage("$ALICE_ROOT/PWG0base");
}
else
{
+ gSystem->AddIncludePath("-I${ALICE_ROOT}/include/ -I${ALICE_ROOT}/PWG0/ -I${ALICE_ROOT}/PWG0/dNdEta/");
gSystem->Load("libVMC");
gSystem->Load("libTree");
+ gSystem->Load("libProof");
gSystem->Load("libSTEERBase");
gSystem->Load("libESD");
gSystem->Load("libAOD");
mgr = new AliAnalysisManager;
// Add ESD handler
- AliESDInputHandler* esdH = new AliESDInputHandler;
- esdH->SetInactiveBranches("AliESDACORDE FMD ALIESDTZERO ALIESDVZERO ALIESDZDC AliRawDataErrorLogs CaloClusters Cascades EMCALCells EMCALTrigger ESDfriend Kinks Kinks Cascades AliESDTZERO ALIESDACORDE MuonTracks TrdTracks CaloClusters");
+
+ if (fullAliroot)
+ AliESDInputHandler* esdH = new AliESDInputHandlerRP; // for RecPoints
+ else
+ AliESDInputHandler* esdH = new AliESDInputHandler;
+
+ esdH->SetInactiveBranches("FMD AliRawDataErrorLogs CaloClusters Cascades EMCALCells EMCALTrigger ESDfriend Kinks MuonTracks TrdTracks");
mgr->SetInputEventHandler(esdH);
-
- AliPWG0Helper::AnalysisMode analysisMode = AliPWG0Helper::kSPD;
- AliPWG0Helper::Trigger trigger = AliPWG0Helper::kMB1;
-
- AliPWG0Helper::PrintConf(analysisMode, trigger);
+ AliPWG0Helper::AnalysisMode analysisMode = AliPWG0Helper::kSPD | AliPWG0Helper::kFieldOn;
+ //AliPWG0Helper::AnalysisMode analysisMode = AliPWG0Helper::kSPD | AliPWG0Helper::kFieldOn | AliPWG0Helper::kSPDOnlyL0;
+ //AliPWG0Helper::AnalysisMode analysisMode = AliPWG0Helper::kTPCITS | AliPWG0Helper::kFieldOn;
+
+ //AliTriggerAnalysis::Trigger trigger = AliTriggerAnalysis::kAcceptAll | AliTriggerAnalysis::kOfflineFlag;
+ AliTriggerAnalysis::Trigger trigger = AliTriggerAnalysis::kAcceptAll | AliTriggerAnalysis::kOfflineFlag | AliTriggerAnalysis::kOneParticle;
+
+ //AliTriggerAnalysis::Trigger trigger = AliTriggerAnalysis::kSPDGFOBits | AliTriggerAnalysis::kOfflineFlag;
+ //AliTriggerAnalysis::Trigger trigger = AliTriggerAnalysis::kSPDGFOBits | AliTriggerAnalysis::kOfflineFlag | AliTriggerAnalysis::kOneParticle;
+
+ //AliTriggerAnalysis::Trigger trigger = AliTriggerAnalysis::kV0AND | AliTriggerAnalysis::kOfflineFlag;
+
+ //AliTriggerAnalysis::Trigger trigger = AliTriggerAnalysis::kV0OR | AliTriggerAnalysis::kOfflineFlag;
+ //AliTriggerAnalysis::Trigger trigger = AliTriggerAnalysis::kV0OR | AliTriggerAnalysis::kOfflineFlag | AliTriggerAnalysis::kOneParticle;
+
+ AliPWG0Helper::DiffTreatment diffTreatment = AliPWG0Helper::kMCFlags;
+ //AliPWG0Helper::DiffTreatment diffTreatment = AliPWG0Helper::kE710Cuts;
+
+ AliPWG0Helper::PrintConf(analysisMode, trigger, diffTreatment);
AliESDtrackCuts* esdTrackCuts = 0;
- if (analysisMode != AliPWG0Helper::kSPD)
+ if (!(analysisMode & AliPWG0Helper::kSPD))
{
// selection of esd tracks
gROOT->ProcessLine(".L ../CreateStandardCuts.C");
esdTrackCuts->SetHistogramsOn(kTRUE);
}
- cInput = mgr->GetCommonInputContainer();
+ cInput = mgr->GetCommonInputContainer();
+
+ // remove SAVE option if set
+ Bool_t save = kFALSE;
+ TString optStr(option);
+ if (optStr.Contains("SAVE"))
+ {
+ optStr = optStr(0,optStr.Index("SAVE")) + optStr(optStr.Index("SAVE")+4, optStr.Length());
+ save = kTRUE;
+ }
+
+ // physics selection
+ gROOT->ProcessLine(".L $ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
+ physicsSelectionTask = AddTaskPhysicsSelection((requiredData == 2) ? kFALSE : kTRUE);
+
+ // 900 GeV
+ if (0 && requiredData == 2)
+ {
+ physicsSelectionTask->GetPhysicsSelection()->AddCollisionTriggerClass("+CINT1B-ABCE-NOPF-ALL #769 #3119");
+ physicsSelectionTask->GetPhysicsSelection()->AddBGTriggerClass("+CINT1A-ABCE-NOPF-ALL #446 #2554");
+ physicsSelectionTask->GetPhysicsSelection()->AddBGTriggerClass("+CINT1C-ABCE-NOPF-ALL #1334 #2228");
+ physicsSelectionTask->GetPhysicsSelection()->AddBGTriggerClass("+CINT1-E-NOPF-ALL #790");
+ }
+
+ // 7 TeV, run 114783
+ if (0 && requiredData == 2)
+ {
+ physicsSelectionTask->GetPhysicsSelection()->AddCollisionTriggerClass("+CINT1B-ABCE-NOPF-ALL #345");
+ physicsSelectionTask->GetPhysicsSelection()->AddBGTriggerClass("+CINT1A-ABCE-NOPF-ALL #2130");
+ physicsSelectionTask->GetPhysicsSelection()->AddBGTriggerClass("+CINT1C-ABCE-NOPF-ALL #3018");
+ physicsSelectionTask->GetPhysicsSelection()->AddBGTriggerClass("+CINT1-E-NOPF-ALL #1238");
+ }
+ // 7 TeV, run 114786,98
+ if (0 && requiredData == 2)
+ {
+ physicsSelectionTask->GetPhysicsSelection()->AddCollisionTriggerClass("+CINT1B-ABCE-NOPF-ALL #346");
+ physicsSelectionTask->GetPhysicsSelection()->AddBGTriggerClass("+CINT1A-ABCE-NOPF-ALL #2131");
+ physicsSelectionTask->GetPhysicsSelection()->AddBGTriggerClass("+CINT1C-ABCE-NOPF-ALL #3019");
+ physicsSelectionTask->GetPhysicsSelection()->AddBGTriggerClass("+CINT1-E-NOPF-ALL #1238");
+ //physicsSelectionTask->GetPhysicsSelection()->Initialize(114786);
+ }
+
+ // FO efficiency (for MC)
+ if (1 && requiredData != 2)
+ {
+ //const char* fastORFile = "spdFOEff_run104824_52.root";
+ //const char* fastORFile = "spdFOEff_run104867_92.root";
+ //const char* fastORFile = "spdFOEff_run105054_7.root";
+ const char* fastORFile = "spdFOEff_run114931.root";
+
+ Printf("NOTE: Simulating FAST-OR efficiency on the analysis level using file %s", fastORFile);
+ TFile::Open(fastORFile);
+ spdFOEff = (TH1F*) gFile->Get("spdFOEff");
+ physicsSelectionTask->GetPhysicsSelection()->Initialize(114931);
+ physicsSelectionTask->GetPhysicsSelection()->GetTriggerAnalysis()->SetSPDGFOEfficiency(spdFOEff);
+ }
+
+ // V0 syst. study
+ if (0)
+ {
+ Printf("NOTE: Systematic study for VZERO enabled!");
+ physicsSelectionTask->GetPhysicsSelection()->Initialize(104867);
+ for (Int_t i=0; i<1; i++)
+ {
+ // for MC and data
+ //physicsSelectionTask->GetPhysicsSelection()->GetTriggerAnalysis(i)->SetV0HwPars(15, 61.5, 86.5);
+ physicsSelectionTask->GetPhysicsSelection()->GetTriggerAnalysis(i)->SetV0AdcThr(6);
+ // only for MC
+ //physicsSelectionTask->GetPhysicsSelection()->GetTriggerAnalysis(i)->SetV0HwPars(0, 0, 125);
+ //physicsSelectionTask->GetPhysicsSelection()->GetTriggerAnalysis(i)->SetV0AdcThr(0);
+ }
+ }
+
+ // BG study
+ //physicsSelectionTask->GetPhysicsSelection()->AddCollisionTriggerClass("+CINT1A-ABCE-NOPF-ALL");
+ //physicsSelectionTask->GetPhysicsSelection()->AddCollisionTriggerClass("+CINT1C-ABCE-NOPF-ALL");
+
// Create, add task
if (runWhat == 0 || runWhat == 2)
{
Load("AlidNdEtaTask", aDebug);
- task = new AlidNdEtaTask(option);
+ task = new AlidNdEtaTask(optStr);
- if (mc)
+ if (requiredData == 1)
task->SetReadMC();
+
+ //physicsSelectionTask->GetPhysicsSelection()->SetBin0Callback("AlidNdEtaTask");
// syst. error flags
//task->SetUseMCVertex();
//task->SetUseMCKine();
//task->SetOnlyPrimaries();
+ //task->SetFillPhi();
+ //task->SetSymmetrize();
+
+ // INEL>0 definition
+ if (trigger & AliTriggerAnalysis::kOneParticle)
+ task->SetMultAxisEta1();
task->SetTrigger(trigger);
task->SetAnalysisMode(analysisMode);
task->SetTrackCuts(esdTrackCuts);
+ //task->SetDeltaPhiCut(0.064);
+ task->SetDiffTreatment(diffTreatment);
mgr->AddTask(task);
// Attach output
cOutput = mgr->CreateContainer("cOutput", TList::Class(), AliAnalysisManager::kOutputContainer);
- mgr->ConnectOutput(task, 0, cOutput);
+ mgr->ConnectOutput(task, 1, cOutput);
}
+
if (runWhat == 1 || runWhat == 2)
{
Load("AlidNdEtaCorrectionTask", aDebug);
- task2 = new AlidNdEtaCorrectionTask(option);
+ task2 = new AlidNdEtaCorrectionTask(optStr);
// syst. error flags
+ //task2->SetFillPhi();
//task2->SetOnlyPrimaries();
+ //task2->SetSymmetrize();
+
+ // to account for gaps in real life SPD geometry
+ task2->SetSkipParticles();
+
+ // INEL>0 definition
+ if (trigger & AliTriggerAnalysis::kOneParticle)
+ task2->SetMultAxisEta1();
task2->SetTrigger(trigger);
task2->SetAnalysisMode(analysisMode);
task2->SetTrackCuts(esdTrackCuts);
+ //task2->SetDeltaPhiCut(0.064);
+ task2->SetDiffTreatment(diffTreatment);
mgr->AddTask(task2);
mgr->ConnectOutput(task2, 0, cOutput);
}
- if (mc) {
+ if (requiredData == 1)
+ {
// Enable MC event handler
AliMCEventHandler* handler = new AliMCEventHandler;
handler->SetReadTR(kFALSE);
// process dataset
mgr->StartAnalysis("proof", data, nRuns, offset);
+
+ if (save)
+ {
+ TString path("maps/");
+ path += TString(data).Tokenize("/")->Last()->GetName();
+
+ UInt_t triggerNoFlags = (UInt_t) trigger % (UInt_t) AliTriggerAnalysis::kStartOfFlags;
+ switch (triggerNoFlags)
+ {
+ case AliTriggerAnalysis::kMB1: path += "/mb1"; break;
+ case AliTriggerAnalysis::kMB2: path += "/mb2"; break;
+ case AliTriggerAnalysis::kMB3: path += "/mb3"; break;
+ case AliTriggerAnalysis::kSPDGFO: path += "/spdgfo"; break;
+ case AliTriggerAnalysis::kSPDGFOBits: path += "/spdgfobits"; break;
+ case AliTriggerAnalysis::kAcceptAll: path += "/all"; break;
+ case AliTriggerAnalysis::kV0AND: path += "/v0and"; break;
+ case AliTriggerAnalysis::kV0OR: path += "/v0or"; break;
+ case AliTriggerAnalysis::kNSD1: path += "/nsd1"; break;
+ case AliTriggerAnalysis::kMB1Prime: path += "/mb1prime"; break;
+ default: Printf("ERROR: Trigger undefined for path to files"); return;
+ }
+
+ if (trigger & AliTriggerAnalysis::kOneParticle)
+ path += "-onepart";
+
+ if (strlen(requireClass) > 0 && strlen(rejectClass) == 0)
+ {
+ path += Form("/%s", requireClass);
+ }
+ else if (strlen(rejectClass) > 0)
+ path += Form("/%s--%s", requireClass, rejectClass);
+
+ if (analysisMode & AliPWG0Helper::kSPD)
+ path += "/spd";
+
+ if (analysisMode & AliPWG0Helper::kSPDOnlyL0)
+ path += "onlyL0";
+
+ if (analysisMode & AliPWG0Helper::kTPC)
+ path += "/tpc";
+
+ if (analysisMode & AliPWG0Helper::kTPCITS)
+ path += "/tpcits";
+
+ gSystem->mkdir(path, kTRUE);
+ if (runWhat == 0 || runWhat == 2)
+ {
+ gSystem->Rename("analysis_esd_raw.root", path + "/analysis_esd_raw.root");
+ if (requiredData == 1)
+ gSystem->Rename("analysis_mc.root", path + "/analysis_mc.root");
+ }
+ if (runWhat == 1 || runWhat == 2)
+ {
+ if (optStr.Contains("process-types"))
+ gSystem->Rename("correction_mapprocess-types.root", path + "/correction_mapprocess-types.root");
+ else
+ gSystem->Rename("correction_map.root", path + "/correction_map.root");
+ }
+ gSystem->Rename("event_stat.root", path + "/event_stat.root");
+
+ Printf(">>>>> Moved files to %s", path.Data());
+ }
}
else if (aProof == 3)
{
- ROOT->ProcessLine(".L CreateChainFromDataSet.C");
- ds = gProof->GetDataSet(data);
- chain = CreateChainFromDataSet(ds);
- mgr->StartAnalysis("local", chain, nRuns, offset);
+ gROOT->ProcessLine(".L CreateChainFromDataSet.C");
+ ds = gProof->GetDataSet(data)->GetStagedSubset();
+ chain = CreateChainFromDataSet(ds, "esdTree", nRuns);
+ mgr->StartAnalysis("local", chain, 1234567890, offset);
}
else
{