]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Including the AliESDtrackCuts and the plugin
authorpchrist <pchrist@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 3 Oct 2010 13:54:24 +0000 (13:54 +0000)
committerpchrist <pchrist@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sun, 3 Oct 2010 13:54:24 +0000 (13:54 +0000)
PWG2/EBYE/AliAnalysisTaskBF.cxx
PWG2/EBYE/AliAnalysisTaskBF.h
PWG2/EBYE/macros/AddTaskBalanceFunction.C
PWG2/EBYE/macros/CreateAlienHandler.C [new file with mode: 0644]
PWG2/EBYE/macros/configBalanceFunctionAnalysis.C
PWG2/EBYE/macros/runBalanceFunction.C

index b2b344f75490601383cd7a4934414bbf3afad5c6..594ce38476b744ec9defa4a45e1892a24fa9313f 100755 (executable)
@@ -17,6 +17,7 @@
 #include "AliMCEventHandler.h"
 #include "AliMCEvent.h"
 #include "AliStack.h"
+#include "AliESDtrackCuts.h"
 
 #include "AliBalance.h"
 
@@ -32,7 +33,8 @@ AliAnalysisTaskBF::AliAnalysisTaskBF(const char *name)
   : AliAnalysisTaskSE(name), 
     fBalance(0),
     fList(0),
-    fHistEventStats(0) {
+    fHistEventStats(0),
+    fESDtrackCuts(0) {
   // Constructor
 
   // Define input and output slots here
@@ -67,6 +69,8 @@ void AliAnalysisTaskBF::UserCreateOutputObjects() {
     fHistEventStats->GetXaxis()->SetBinLabel(i,gCutName[i-1].Data());
   fList->Add(fHistEventStats);
 
+  if(fESDtrackCuts) fList->Add(fESDtrackCuts);
+
   // Post output data.
   PostData(1, fBalance);
   PostData(2, fList);
@@ -105,6 +109,10 @@ void AliAnalysisTaskBF::UserExec(Option_t *) {
            Printf("ERROR: Could not receive track %d", iTracks);
            continue;
          }
+
+         //ESD track cuts
+         if(fESDtrackCuts) 
+           if(!fESDtrackCuts->AcceptTrack(track)) continue;
          array->Add(track);
        } //track loop
       }//vertex object valid
index 130b9e5169029ec5cd23fbc5f096ac43f4bb7403..51b9708e29981bb172e9a35320bd52e1a1abf1d2 100755 (executable)
@@ -8,9 +8,7 @@ class TList;
 class TH1F;\r
 \r
 class AliBalance;\r
-class AliESDEvent;\r
-class AliAODEvent;\r
-class AliMCEvent;\r
+class AliESDtrackCuts;\r
 \r
 #include "AliAnalysisTaskSE.h"\r
 \r
@@ -25,12 +23,16 @@ class AliAnalysisTaskBF : public AliAnalysisTaskSE {
 \r
   void SetAnalysisObject(AliBalance *const analysis) {\r
     fBalance = analysis;}\r
+  void SetAnalysisCutObject(AliESDtrackCuts *const trackCuts) {\r
+    fESDtrackCuts = trackCuts;}\r
   \r
  private:\r
   AliBalance *fBalance; //BF object\r
   TList *fList; //fList object\r
   TH1F *fHistEventStats; //event stats\r
 \r
+  AliESDtrackCuts *fESDtrackCuts; //ESD track cuts\r
+\r
   AliAnalysisTaskBF(const AliAnalysisTaskBF&); // not implemented\r
   AliAnalysisTaskBF& operator=(const AliAnalysisTaskBF&); // not implemented\r
   \r
index 15123938eb0561305a226a060e604c1d89911be0..2da01bf58d2ca5cdfac7985cdcbff19fc2a85169 100644 (file)
@@ -27,6 +27,11 @@ AliAnalysisTaskBF *AddTaskBalanceFunction() {
   mgr->AddTask(taskBF);
   taskBF->SetAnalysisObject(bf);
 
+  if (type=="ESD") {
+    AliESDtrackCuts *trackCuts = GetTrackCutsObject();
+    taskBF->SetAnalysisCutObject(trackCuts);
+  }
+
   // Create ONLY the output containers for the data produced by the task.
   // Get and connect other common input/output containers via the manager as below
   //==============================================================================
diff --git a/PWG2/EBYE/macros/CreateAlienHandler.C b/PWG2/EBYE/macros/CreateAlienHandler.C
new file mode 100644 (file)
index 0000000..d175ca5
--- /dev/null
@@ -0,0 +1,96 @@
+AliAnalysisGrid* CreateAlienHandler() {
+  // Check if user has a valid token, otherwise make one. This has limitations.
+  // One can always follow the standard procedure of calling alien-token-init 
+  // then source /tmp/gclient_env_$UID in the current shell.
+  if (!AliAnalysisGrid::CreateToken()) return NULL;
+  AliAnalysisAlien *plugin = new AliAnalysisAlien();
+  
+  // Set the run mode (can be "full", "test", "offline", "submit" or "terminate")
+  //plugin->SetRunMode("test");
+  //plugin->SetRunMode("offline");
+  //plugin->SetRunMode("submit");
+  plugin->SetRunMode("full");
+  //plugin->SetRunMode("terminate");
+  plugin->SetNtestFiles(1); // Relevant only for run mode "test" 
+
+  // Set versions of used packages
+  plugin->SetAPIVersion("V1.1x");
+  plugin->SetROOTVersion("v5-26-00b-6");
+  plugin->SetAliROOTVersion("v4-19-22-AN");
+
+  // Declare input data to be processed - can be done in two ways:
+  // METHOD 1: Create automatically XML collections using alien 'find' command.
+  // ============================================================================
+  //  Example 1: MC production (set in macro runFlowTask.C: DATA = kFALSE)
+  // plugin->SetGridDataDir("/alice/sim/LHC10a10");
+  // plugin->SetDataPattern("*AliESDs.root"); // The default data pattern, other may be "*tag.root", "*ESD.tag.root", etc
+  // plugin->AddRunNumber(105054); // Alternatively use e.g. plugin->SetRunRange(105044,106044); to add more runs in one go  
+  // plugin->SetOutputToRunNo();  
+  // ============================================================================
+  //  Example 2: Real data (set in macro runFlowTask.C: DATA = kTRUE, MCEP = kFALSE)
+  plugin->SetGridDataDir("/alice/data/2010/LHC10c");
+  plugin->SetDataPattern("*ESDs/pass1/*ESDs.root");
+  plugin->SetRunPrefix("000");
+  
+  plugin->AddRunNumber(120244); 
+  plugin->AddRunNumber(119844); // Alternatively use e.g. plugin->SetRunRange(104044,106044); to add more runs in one go 
+  
+  plugin->SetOutputToRunNo();  
+  // ============================================================================
+  // METHOD 2: Declare existing data files (raw collections, xml collections, root file)
+  // If no path mentioned data is supposed to be in the work directory (see SetGridWorkingDir())
+  // XML collections added via this method can be combined with the first method if
+  // the content is compatible (using or not tags)
+  //plugin->AddDataFile("hijingWithoutFlow10000Evts.xml");
+  //   plugin->AddDataFile("/alice/data/2008/LHC08c/000057657/raw/Run57657.Merged.RAW.tag.root");
+  // Define alien work directory where all files will be copied. Relative to alien $HOME.
+  plugin->SetGridWorkingDir("data");
+  // Declare alien output directory. Relative to working directory.
+  plugin->SetGridOutputDir("output"); // In this case will be $HOME/work/output
+  // Declare the analysis source files names separated by blancs. To be compiled runtime
+  // using ACLiC on the worker nodes:
+  // ... (if this is needed see in official tutorial example how to do it!)
+
+  // Declare all libraries (other than the default ones for the framework. These will be
+  // loaded by the generated analysis macro. Add all extra files (task .cxx/.h) here.
+  //plugin->SetAdditionalLibs("libPWG2flowCommon.so libPWG2flowTasks.so");
+  // load libs via par files
+  //plugin->EnablePackage("PWG2ebye.par");
+  
+  // Do not specify your outputs by hand anymore:
+  plugin->SetDefaultOutputs(kTRUE);
+  // To specify your outputs by hand set plugin->SetDefaultOutputs(kFALSE); and comment in line plugin->SetOutputFiles("..."); 
+  // and plugin->SetOutputArchive("..."); bellow.
+  // Declare the output file names separated by blancs.
+  // (can be like: file.root or file.root@ALICE::Niham::File)
+  // plugin->SetOutputFiles("AnalysisResults.root");
+  // Optionally define the files to be archived.
+  // plugin->SetOutputArchive("log_archive.zip:stdout,stderr@ALICE::NIHAM::File root_archive.zip:*.root@ALICE::NIHAM::File");
+  // plugin->SetOutputArchive("log_archive.zip:stdout,stderr");
+  // plugin->SetOutputArchive("log_archive.zip:");
+  // Optionally set a name for the generated analysis macro (default MyAnalysis.C)
+  plugin->SetAnalysisMacro("bfAnalysis.C");
+  // Optionally set maximum number of input files/subjob (default 100, put 0 to ignore)
+  plugin->SetSplitMaxInputFileNumber(100);
+  // Optionally set number of runs per masterjob:
+  plugin->SetNrunsPerMaster(1);
+  // Optionally set overwrite mode. Will trigger overwriting input data colections AND existing output files:
+  plugin->SetOverwriteMode(kTRUE);
+  // Optionally set number of failed jobs that will trigger killing waiting sub-jobs.
+  plugin->SetMaxInitFailed(5);
+  // Optionally resubmit threshold.
+  plugin->SetMasterResubmitThreshold(90);
+  // Optionally set time to live (default 30000 sec)
+  plugin->SetTTL(20000);
+  // Optionally set input format (default xml-single)
+  plugin->SetInputFormat("xml-single");
+  // Optionally modify the name of the generated JDL (default analysis.jdl)
+  plugin->SetJDLName("bfAnalysis.jdl");
+  // Optionally modify job price (default 1)
+  plugin->SetPrice(1);      
+  // Optionally modify split mode (default 'se')    
+  plugin->SetSplitMode("se");
+
+  return plugin;
+}
index f1c0108e0025ea075a3177a9a7a93c2ee2c1623f..e0540f2e6b0633e53c051b0c3236a97f46fa4143 100644 (file)
@@ -9,3 +9,24 @@ AliBalance *GetBalanceFunctionObject(const char* analysisLevel = "ESD") {
 
   return gBalance;
 }
+
+//__________________________________________________//
+AliESDtrackCuts *GetTrackCutsObject() {
+  //Function to setup the AliESDtrackCuts object and return it
+  AliESDtrackCuts *cuts = new AliESDtrackCuts("bfTrackCuts","bfTrackCuts");
+  cuts->SetMinNClustersTPC(80);
+  cuts->SetMinNClustersITS(2);
+  cuts->SetMaxChi2PerClusterTPC(4.0);
+  cuts->SetRequireTPCRefit();
+  cuts->SetRequireITSRefit();
+  cuts->SetAcceptKinkDaughters(kFALSE);
+  cuts->SetMaxDCAToVertexXY(0.3);
+  cuts->SetMaxDCAToVertexZ(0.3);
+  
+  cuts->SetPtRange(0.3,1.5);
+  cuts->SetEtaRange(-0.8,0.8);
+
+  cuts->SaveHistograms("trackCuts");
+
+  return cuts;
+}
index 0f4ac14473bcd9e82d9299da91cd407b727df752..6579e481bc347e2d692f7ff03dcb21ceaa61ee9d 100755 (executable)
@@ -64,69 +64,10 @@ void runBalanceFunction(Int_t analysisMode = kLocal,
     mgr->StartAnalysis("grid");
   }
 
-  //runLocal(mode);
-
   timer.Stop();
   timer.Print();
 }
 
-/*void runLocal(const char* mode) {
-  //____________________________________________________//
-  //_____________Setting up the par files_______________//
-  //____________________________________________________//
-  //setupPar("STEERBase");
-  gSystem->Load("libSTEERBase.so");
-  //setupPar("ESD");
-  gSystem->Load("libVMC.so");
-  gSystem->Load("libESD.so");
-  //setupPar("AOD");
-  gSystem->Load("libAOD.so");
-  //setupPar("ANALYSIS");
-  gSystem->Load("libANALYSIS.so");
-  //setupPar("ANALYSISalice");
-  gSystem->Load("libANALYSISalice.so");
-  //setupPar("PWG2ebye");
-  gSystem->Load("libPWG2ebye.so");
-
-  //___________________________________________________//
-  TChain *chain = new TChain("esdTree");
-  chain->Add("AliESDs.root");
-
-  gROOT->LoadMacro("configBalanceFunctionAnalysis.C");
-  AliBalance *analysis = GetBalanceFunctionObject(mode);
-
-  //___________________________________________________//
-  // Create the analysis manager
-  AliAnalysisManager *mgr = new AliAnalysisManager("testAnalysis");
-
-  AliVEventHandler* esdH = new AliESDInputHandler();
-  mgr->SetInputEventHandler(esdH);
-
-  // Create task
-  AliAnalysisTaskBF *taskBF = new AliAnalysisTaskBF("TaskBF");
-  taskBF->SetAnalysisObject(analysis);
-  // Add task
-  mgr->AddTask(taskBF);
-
-  // Create conainers for input/output
-  AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
-  AliAnalysisDataContainer *coutput = mgr->CreateContainer("contBF", AliBalance::Class(), AliAnalysisManager::kOutputContainer, "BF.ESD.root");
-
-  // Connect input/output
-  mgr->ConnectInput(taskBF, 0, cinput);
-  mgr->ConnectOutput(taskBF, 0, coutput);
-
-  // Enable debug printouts
-  mgr->SetDebugLevel(2);
-
-  if (!mgr->InitAnalysis())
-    return;
-
-  mgr->PrintStatus();
-
-  mgr->StartAnalysis("local", chain);
-  }*/
-
 //__________________________________________________________//
 Int_t setupPar(const char* pararchivename) {
   ///////////////////