TChain * GetAnalysisChain(const char * incollection);
-void run(Char_t* data, Long64_t nev = -1, Long64_t offset = 0, Bool_t debug = kFALSE, Int_t runMode = 0, Bool_t isMC = 0, Int_t centrBin = 0, const char * centrEstimator = "VOM", const char* option = "",TString customSuffix = "", Int_t workers = -1)
+void run(Char_t* data, Long64_t nev = -1, Long64_t offset = 0, Bool_t debug = kFALSE, Int_t runMode = 0, Bool_t isMC = 0,
+ Int_t centrBin = 0, const char * centrEstimator = "VOM", Int_t useOtherCentralityCut = 0, Int_t trackMin=0, Int_t trackMax=10000,
+ const char* option = "",TString customSuffix = "", Int_t workers = -1, Bool_t useSingleBin=kTRUE)
{
// runMode:
//
// Add ESD handler
AliESDInputHandler* esdH = new AliESDInputHandler;
// Do I need any of this?
- // esdH->SetInactiveBranches("AliESDACORDE FMD ALIESDTZERO ALIESDZDC AliRawDataErrorLogs CaloClusters Cascades EMCALCells EMCALTrigger ESDfriend Kinks AliESDTZERO ALIESDACORDE MuonTracks TrdTracks");
+ esdH->SetInactiveBranches("AliESDACORDE FMD ALIESDTZERO ALIESDZDC AliRawDataErrorLogs CaloClusters Cascades EMCALCells EMCALTrigger ESDfriend Kinks AliESDTZERO ALIESDACORDE MuonTracks TrdTracks");
mgr->SetInputEventHandler(esdH);
if(isMC) {
// physics selection
gROOT->ProcessLine(".L $ALICE_ROOT/ANALYSIS/macros/AddTaskPhysicsSelection.C");
- physicsSelectionTask = AddTaskPhysicsSelection(isMC,1);
- // FIXME!!
- if(!isMC) {
- AliPhysicsSelection * physSel = physicsSelectionTask->GetPhysicsSelection();
- // physSel->AddCollisionTriggerClass("+CTRUE-B-NOPF-ALL");
- physSel->AddCollisionTriggerClass("+C0SM1-B-NOPF-ALL");
- physSel->AddBGTriggerClass ("+C0SM1-A-NOPF-ALL");
- physSel->AddBGTriggerClass ("+C0SM1-C-NOPF-ALL");
- physSel->AddBGTriggerClass ("+C0SM1-E-NOPF-ALL");
- }
+ physicsSelectionTask = AddTaskPhysicsSelection(isMC);
// Centrality
AliCentralitySelectionTask *taskCentr = new AliCentralitySelectionTask("CentralitySelection");
- // const char * file1 = "$ALICE_ROOT/ANALYSIS/macros/test_AliCentralityBy1D.root";
+ const char * file1 = "$ALICE_ROOT/ANALYSIS/macros/test_AliCentralityBy1D.root";
+ const char * file2 = "$ALICE_ROOT/ANALYSIS/macros/test_AliCentralityByFunction.root";
+ // const char * file1 = "$ALICE_ROOT/ANALYSIS/macros/AliCentralityBy1D_LHC10g2a_100.root";
+ // const char * file2 = "$ALICE_ROOT/ANALYSIS/macros/AliCentralityByFunction_LHC10g2a_100.root";
+ // const char * file1 = "$ALICE_ROOT/ANALYSIS/macros/AliCentralityBy1D_137161_GLAU.root";
// const char * file2 = "$ALICE_ROOT/ANALYSIS/macros/test_AliCentralityByFunction.root";
- const char * file1 = "$ALICE_ROOT/ANALYSIS/macros/AliCentralityBy1D_LHC10g2a_100.root";
- const char * file2 = "$ALICE_ROOT/ANALYSIS/macros/AliCentralityByFunction_LHC10g2a_100.root";
- taskCentr->SetPercentileFile (file1);
- taskCentr->SetPercentileFile2(file2);
- mgr->AddTask(taskCentr);
- mgr->ConnectInput (taskCentr,0, mgr->GetCommonInputContainer());
+
+ // taskCentr->SetPercentileFile (file1);
+ // taskCentr->SetPercentileFile2(file2);
+ //FIXME: include back centrality estimator
+ // mgr->AddTask(taskCentr);
+ // mgr->ConnectInput (taskCentr,0, mgr->GetCommonInputContainer());
// Create my own centrality selector
AliAnalysisMultPbCentralitySelector * centrSelector = new AliAnalysisMultPbCentralitySelector();
+ centrSelector->SetIsMC(isMC);
centrSelector->SetCentrTaskFiles(file1,file2); // for bookkeping only
centrSelector->SetCentralityBin(centrBin);
+ if (!useSingleBin) centrSelector->SetCentralityBin(0); // FIXME: ok?
centrSelector->SetCentralityEstimator(centrEstimator);
- // FIXME!!!
- // centrSelector->SetUseMultRange();
- centrSelector->SetIsMC(isMC,1500,2300);
- // centrSelector->SetMultRange(10,20);
+
+
+ if(useOtherCentralityCut == 1){
+ cout << "Setting centrality by MULT" << endl;
+ centrSelector->SetUseMultRange();
+ centrSelector->SetMultRange(trackMin,trackMax);
+ }
+ if(useOtherCentralityCut == 2){
+ cout << "Setting centrality by V0" << endl;
+
+ centrSelector->SetUseV0Range();
+ centrSelector->SetMultRange(trackMin,trackMax);
+ }
+ if(useOtherCentralityCut == 3){
+ cout << "Setting centrality by SPD outer" << endl;
+ centrSelector->SetUseSPDOuterRange();
+ centrSelector->SetMultRange(trackMin,trackMax);
+ }
// Parse option strings
TString optionStr(option);
Bool_t doSave = kFALSE;
TString optionStr(option);
if (optionStr.Contains("SAVE"))
- {
- optionStr = optionStr(0,optionStr.Index("SAVE")) + optionStr(optionStr.Index("SAVE")+4, optionStr.Length());
- doSave = kTRUE;
- }
+ {
+ optionStr = optionStr(0,optionStr.Index("SAVE")) + optionStr(optionStr.Index("SAVE")+4, optionStr.Length());
+ doSave = kTRUE;
+ }
- AliESDtrackCuts * cuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kTRUE);
+ AliESDtrackCuts * cuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kFALSE);
TString pathsuffix = "";
- // cuts->SetPtRange(0.15,0.2);// FIXME pt cut
- // const char * pathsuffix = "_pt_015_020_nofakes";
+
+ if(!useSingleBin) pathsuffix += "_AllCentr";
+
+ if (optionStr.Contains("DCA")) {
+ delete cuts;
+ // cuts = AliESDtrackCuts::GetStandardITSPureSATrackCuts2009();
+ cout << ">>>> USING DCA cut" << endl;
+ cuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kFALSE);
+ pathsuffix+="_DCAcut";
+ }
if (optionStr.Contains("ITSsa")) {
delete cuts;
cuts = AliESDtrackCuts::GetStandardITSPureSATrackCuts2009();
cout << ">>>> USING ITS sa tracks" << endl;
- pathsuffix="ITSsa";
+ pathsuffix+="_ITSsa";
}
if (optionStr.Contains("TPC")) {
delete cuts;
cuts = AliESDtrackCuts::GetStandardTPCOnlyTrackCuts();
cout << ">>>> USING TPC only tracks" << endl;
- pathsuffix="TPC";
+ pathsuffix+="_TPC";
}
Bool_t useMCKinematics = isMC;
if (optionStr.Contains("NOMCKIN")) {
cout << ">>>> Ignoring MC kinematics" << endl;
useMCKinematics=kFALSE;
+ pathsuffix+="_NOMCKIN";
}
+ AliLog::SetClassDebugLevel("AliESDtrackCuts", AliLog::kDebug);// FIXME
+ cuts->DefineHistograms();
// load my task
- gROOT->ProcessLine(".L $ALICE_ROOT/PWG0/multPbPb/AddTaskMultPbPbTracks.C");
- AliAnalysisTaskMultPbTracks * task = AddTaskMultPbPbTracks("multPbPbtracks.root", cuts, centrSelector); // kTRUE enables DCA cut
- task->SetIsMC(useMCKinematics);
- if (isMC) {
+ if (useSingleBin) {
+ gROOT->ProcessLine(".L $ALICE_ROOT/PWG0/multPbPb/AddTaskMultPbPbTracks.C");
+ AliAnalysisTaskMultPbTracks * task = AddTaskMultPbPbTracks("multPbPbtracks.root", cuts, centrSelector);
+ task->SetIsMC(useMCKinematics);
task->SetOfflineTrigger(AliVEvent::kMB);
+ if(optionStr.Contains("TPC")) task->SetTPCOnly();
+ if(useMCKinematics) task->GetHistoManager()->SetSuffix("MC");
+ if(customSuffix!=""){
+ cout << "Setting custom suffix: " << customSuffix << endl;
+ task->GetHistoManager()->SetSuffix(customSuffix);
+ }
} else {
- task->SetOfflineTrigger(AliVEvent::kUserDefined);
+ gROOT->ProcessLine(".L $ALICE_ROOT/PWG0/multPbPb/AddTaskMultPbPbTracksAllCentrality.C");
+ centrSelector->SetUseV0Range(kTRUE);
+ Int_t ncentr = 11;
+
+ const Float_t minCentr[] = {0 ,79 ,239,559 ,1165,2135,3555,5525,8213 ,12191,15079};
+ const Float_t maxCentr[] = {79,239,559,1165,2135,3555,5525,8213,12191,15079,21000};
+ AliAnalysisTaskMultPbTracks ** tasks = AddTaskMultPbPbTracksAllCentrality("multPbPbtracks.root", cuts, centrSelector, ncentr,minCentr,maxCentr);
+ for(Int_t icentr = 0; icentr < ncentr; icentr++){
+ tasks[icentr]->Print();
+ cout << "MC KINEMATICS:" << useMCKinematics << endl;
+
+ tasks[icentr]->SetIsMC(useMCKinematics);
+ tasks[icentr]->SetOfflineTrigger(AliVEvent::kMB);
+ if(optionStr.Contains("TPC")) tasks[icentr]->SetTPCOnly();
+ if(useMCKinematics) tasks[icentr]->GetHistoManager()->SetSuffix("MC");
+ if(customSuffix!=""){
+ cout << "Setting custom suffix: " << customSuffix+long(icentr) << endl;
+ tasks[icentr]->GetHistoManager()->SetSuffix(customSuffix+long(icentr));
+ }
+ }
}
- if(useMCKinematics) task->GetHistoManager()->SetSuffix("MC");
- if(customSuffix!=""){
- cout << "Setting custom suffix: " << customSuffix << endl;
- task->GetHistoManager()->SetSuffix(customSuffix);
- }
- // task->SelectCollisionCandidates(AliVEvent::kUserDefined);
+ // Init and run the analy
if (!mgr->InitAnalysis()) return;
-
+
mgr->PrintStatus();
if (runMode == kMyRunModeLocal ) {
cout << "ERROR: unknown run mode" << endl;
}
- pathsuffix = pathsuffix + "_" + centrEstimator + "_bin_"+long(centrBin);
+ if (!useOtherCentralityCut) {
+ pathsuffix = pathsuffix + "_" + centrEstimator + "_bin_"+long(centrBin);
+ } else if(useOtherCentralityCut==1){
+ pathsuffix = pathsuffix + "_TrackRange_" + long(trackMin) + "_" + long(trackMax);
+ } else if(useOtherCentralityCut==2){
+ pathsuffix = pathsuffix + "_V0Range_" + long(trackMin) + "_" + long(trackMax);
+ } else if(useOtherCentralityCut==3){
+ pathsuffix = pathsuffix + "_SPDOutRange_" + long(trackMin) + "_" + long(trackMax);
+ }
pathsuffix += customSuffix;
if (doSave) MoveOutput(data, pathsuffix.Data());
+ // FIXME
+ TFile * f = new TFile("cuts.root", "recreate");
+ cuts->SaveHistograms();
+ f->Close();
}
TString fileName = "multPbPbtracks.root";
gSystem->mkdir(path, kTRUE);
gSystem->Rename(fileName, path + "/" + fileName);
+ for(Int_t ibin = 0; ibin < 20; ibin++){
+ TString fileBin = fileName;
+ fileBin.ReplaceAll(".root",Form("_%2.2d.root",ibin));
+ gSystem->Rename(fileBin, path + "/" + fileBin);
+ }
+
gSystem->Rename("event_stat.root", path + "/event_stat.root");
Printf(">>>>> Moved files to %s", path.Data());
}
if (runMode == kMyRunModeCAF)
- {
- cout << "Init in CAF mode" << endl;
-
- gEnv->SetValue("XSec.GSI.DelegProxy", "2");
- TProof::Open("alice-caf.cern.ch", workers>0 ? Form("workers=%d",workers) : "");
+ {
+ cout << "Init in CAF mode" << endl;
- // Enable the needed package
- gProof->UploadPackage("$ALICE_ROOT/STEERBase");
- gProof->EnablePackage("$ALICE_ROOT/STEERBase");
- gProof->UploadPackage("$ALICE_ROOT/ESD");
- gProof->EnablePackage("$ALICE_ROOT/ESD");
- gProof->UploadPackage("$ALICE_ROOT/AOD");
- gProof->EnablePackage("$ALICE_ROOT/AOD");
- gProof->UploadPackage("$ALICE_ROOT/ANALYSIS");
- gProof->EnablePackage("$ALICE_ROOT/ANALYSIS");
- gProof->UploadPackage("$ALICE_ROOT/ANALYSISalice");
- gProof->EnablePackage("$ALICE_ROOT/ANALYSISalice");
- gProof->UploadPackage("$ALICE_ROOT/PWG0base");
- gProof->EnablePackage("$ALICE_ROOT/PWG0base");
- gROOT->ProcessLine(gSystem->ExpandPathName(".include $ALICE_ROOT/PWG0/multPb"));
- gROOT->ProcessLine(gSystem->ExpandPathName(".include $ALICE_ROOT/PWG1/background"));
- }
+ //gEnv->SetValue("XSec.GSI.DelegProxy", "2");
+ TProof * p = TProof::Open("alice-caf.cern.ch", workers>0 ? Form("workers=%d",workers) : "");
+ // TProof * p = TProof::Open("skaf.saske.sk", workers>0 ? Form("workers=%d",workers) : "");
+ p->Exec("TObject *o = gEnv->GetTable()->FindObject(\"Proof.UseMergers\"); gEnv->GetTable()->Remove(o);", kTRUE);
+
+ // gProof->EnablePackage("VO_ALICE@AliRoot::v4-21-17b-AN");
+ // gSystem->Load("libCore.so");
+ // gSystem->Load("libTree.so");
+ // gSystem->Load("libGeom.so");
+ // gSystem->Load("libVMC.so");
+ // gSystem->Load("libPhysics.so");
+ // gSystem->Load("libSTEERBase");
+ // gSystem->Load("libESD");
+ // gSystem->Load("libAOD");
+ // gSystem->Load("libANALYSIS");
+ // gSystem->Load("libOADB");
+ // gSystem->Load("libANALYSISalice");
+
+ // Enable the needed package
+ gProof->UploadPackage("$ALICE_ROOT/obj/STEERBase");
+ gProof->EnablePackage("$ALICE_ROOT/obj/STEERBase");
+ gProof->UploadPackage("$ALICE_ROOT/obj/ESD");
+ gProof->EnablePackage("$ALICE_ROOT/obj/ESD");
+ gProof->UploadPackage("$ALICE_ROOT/obj/AOD");
+ gProof->EnablePackage("$ALICE_ROOT/obj/AOD");
+ gProof->UploadPackage("$ALICE_ROOT/obj/ANALYSIS");
+ gProof->EnablePackage("$ALICE_ROOT/obj/ANALYSIS");
+ gProof->UploadPackage("$ALICE_ROOT/obj/OADB");
+ gProof->EnablePackage("$ALICE_ROOT/obj/OADB");
+ gProof->UploadPackage("$ALICE_ROOT/obj/ANALYSISalice");
+ gProof->EnablePackage("$ALICE_ROOT/obj/ANALYSISalice");
+ gProof->UploadPackage("$ALICE_ROOT/obj/PWG0base");
+ gProof->EnablePackage("$ALICE_ROOT/obj/PWG0base");
+ gROOT->ProcessLine(gSystem->ExpandPathName(".include $ALICE_ROOT/PWG0/multPb"));
+ gROOT->ProcessLine(gSystem->ExpandPathName(".include $ALICE_ROOT/PWG1/background"));
+ }
else
- {
- cout << "Init in Local or Grid mode" << endl;
- gSystem->Load("libCore.so");
- gSystem->Load("libTree.so");
- gSystem->Load("libGeom.so");
- gSystem->Load("libVMC.so");
- gSystem->Load("libPhysics.so");
- gSystem->Load("libSTEERBase");
- gSystem->Load("libESD");
- gSystem->Load("libAOD");
- gSystem->Load("libANALYSIS");
- gSystem->Load("libANALYSISalice");
- // Use AliRoot includes to compile our task
- gROOT->ProcessLine(".include $ALICE_ROOT/include");
-
- // gSystem->Load("libVMC");
- // gSystem->Load("libTree");
- // gSystem->Load("libSTEERBase");
- // gSystem->Load("libESD");
- // gSystem->Load("libAOD");
- // gSystem->Load("libANALYSIS");
- // gSystem->Load("libANALYSISalice");
- // gSystem->Load("libPWG0base");
+ {
+ cout << "Init in Local or Grid mode" << endl;
+ gSystem->Load("libCore.so");
+ gSystem->Load("libTree.so");
+ gSystem->Load("libGeom.so");
+ gSystem->Load("libVMC.so");
+ gSystem->Load("libPhysics.so");
+ gSystem->Load("libSTEERBase");
+ gSystem->Load("libESD");
+ gSystem->Load("libAOD");
+ gSystem->Load("libANALYSIS");
+ gSystem->Load("libOADB");
+ gSystem->Load("libANALYSISalice");
+ // Use AliRoot includes to compile our task
+ gROOT->ProcessLine(".include $ALICE_ROOT/include");
+
+ // gSystem->Load("libVMC");
+ // gSystem->Load("libTree");
+ // gSystem->Load("libSTEERBase");
+ // gSystem->Load("libESD");
+ // gSystem->Load("libAOD");
+ // gSystem->Load("libANALYSIS");
+ // gSystem->Load("libANALYSISalice");
+ // gSystem->Load("libPWG0base");
- gROOT->ProcessLine(gSystem->ExpandPathName(".include $ALICE_ROOT/PWG0/multPb"));
- gROOT->ProcessLine(gSystem->ExpandPathName(".include $ALICE_ROOT/PWG1/background"));
- // gROOT->ProcessLine(gSystem->ExpandPathName(".include $ALICE_ROOT/PWG1/background/"));
- }
+ gROOT->ProcessLine(gSystem->ExpandPathName(".include $ALICE_ROOT/PWG0/multPb"));
+ gROOT->ProcessLine(gSystem->ExpandPathName(".include $ALICE_ROOT/PWG1/background"));
+ // gROOT->ProcessLine(gSystem->ExpandPathName(".include $ALICE_ROOT/PWG1/background/"));
+ }
// Load helper classes
TIterator * iter = listToLoad->MakeIterator();
TObjString * name = 0;