Maker scripts now use TrainSetup exclusively.
authorcholm <cholm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 7 Jun 2012 09:03:25 +0000 (09:03 +0000)
committercholm <cholm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 7 Jun 2012 09:03:25 +0000 (09:03 +0000)
Scripts are simplified a lot.

Fixed up various documentation issues.

55 files changed:
PWGLF/FORWARD/analysis2/AddTaskCentralMult.C
PWGLF/FORWARD/analysis2/AddTaskCentralTracks.C
PWGLF/FORWARD/analysis2/AddTaskCentraldNdeta.C
PWGLF/FORWARD/analysis2/AddTaskFMDELoss.C
PWGLF/FORWARD/analysis2/AddTaskFMDEventPlane.C
PWGLF/FORWARD/analysis2/AddTaskForwardFlow.C
PWGLF/FORWARD/analysis2/AddTaskForwardMult.C
PWGLF/FORWARD/analysis2/AddTaskForwardQA.C
PWGLF/FORWARD/analysis2/AddTaskForwarddNdeta.C
PWGLF/FORWARD/analysis2/AddTaskMCParticleFilter.C
PWGLF/FORWARD/analysis2/AliAODCentralMult.h
PWGLF/FORWARD/analysis2/AliAODForwardEP.h
PWGLF/FORWARD/analysis2/AliAODForwardMult.h
PWGLF/FORWARD/analysis2/AliBaseMCTrackDensity.h
PWGLF/FORWARD/analysis2/AliBasedNdetaTask.cxx
PWGLF/FORWARD/analysis2/AliBasedNdetaTask.h
PWGLF/FORWARD/analysis2/AliCentralMultiplicityTask.h
PWGLF/FORWARD/analysis2/AliCopyHeaderTask.h
PWGLF/FORWARD/analysis2/AliDisplacedVertexSelection.h
PWGLF/FORWARD/analysis2/AliFMDCorrELossFit.h
PWGLF/FORWARD/analysis2/AliFMDCorrector.h
PWGLF/FORWARD/analysis2/AliFMDDensityCalculator.h
PWGLF/FORWARD/analysis2/AliFMDEnergyFitter.h
PWGLF/FORWARD/analysis2/AliFMDEnergyFitterTask.h
PWGLF/FORWARD/analysis2/AliFMDEventInspector.h
PWGLF/FORWARD/analysis2/AliFMDEventPlaneFinder.cxx
PWGLF/FORWARD/analysis2/AliFMDEventPlaneFinder.h
PWGLF/FORWARD/analysis2/AliFMDEventPlaneTask.h
PWGLF/FORWARD/analysis2/AliFMDMCCorrector.h
PWGLF/FORWARD/analysis2/AliFMDMCTrackDensity.h
PWGLF/FORWARD/analysis2/AliFMDMultCuts.h
PWGLF/FORWARD/analysis2/AliFMDSharingFilter.h
PWGLF/FORWARD/analysis2/AliForwardCorrectionManager.h
PWGLF/FORWARD/analysis2/AliForwardFlowTaskQC.h
PWGLF/FORWARD/analysis2/AliForwardFlowWeights.h
PWGLF/FORWARD/analysis2/AliForwardMCFlowTaskQC.h
PWGLF/FORWARD/analysis2/AliForwardMultiplicityBase.h
PWGLF/FORWARD/analysis2/AliForwardQATask.h
PWGLF/FORWARD/analysis2/AliForwardUtil.cxx
PWGLF/FORWARD/analysis2/AliForwardUtil.h
PWGLF/FORWARD/analysis2/AliForwarddNdetaTask.h
PWGLF/FORWARD/analysis2/AliMCTruthdNdetaTask.h
PWGLF/FORWARD/analysis2/AliPoissonCalculator.h
PWGLF/FORWARD/analysis2/AliSPDMCTrackDensity.h
PWGLF/FORWARD/analysis2/CentralAODConfig.C
PWGLF/FORWARD/analysis2/DrawdNdeta.C
PWGLF/FORWARD/analysis2/ForwardAODConfig.C
PWGLF/FORWARD/analysis2/MakeAOD.C
PWGLF/FORWARD/analysis2/MakeELossFits.C
PWGLF/FORWARD/analysis2/MakeFMDEventPlane.C
PWGLF/FORWARD/analysis2/MakeFlow.C
PWGLF/FORWARD/analysis2/MakeForwardQA.C
PWGLF/FORWARD/analysis2/MakeMCCorr.C
PWGLF/FORWARD/analysis2/MakedNdeta.C
PWGLF/FORWARD/analysis2/OtherData.C

index b61fb66..f3c4880 100644 (file)
 /**
  * This is the macro to include the Central multiplicity in a train.  
  * 
+ * @param mc       If true, assume MC input 
+ * @param sys      Pre-set collision system
+ * @param sNN      Pre-set collition energy
+ * @param field    Pre-set magnetic field
+ * @param config   Configuration file to use 
+ * 
+ * @return Newly created task 
+ *
  * @ingroup pwglf_forward_aod
  */
 AliAnalysisTask* 
-AddTaskCentralMult(Bool_t   mc=false, 
-                  UShort_t sys=0, 
-                  UShort_t sNN=0, 
-                  Short_t  field=0, 
-                  Int_t    debug=0)
+AddTaskCentralMult(Bool_t      mc=false, 
+                  UShort_t    sys=0, 
+                  UShort_t    sNN=0, 
+                  Short_t     field=0, 
+                  const char* config="CentralAODConfig.C")
 {
   // --- Load libraries ----------------------------------------------
   gROOT->LoadClass("AliAODForwardMult", "libPWGLFforward2");
@@ -42,8 +50,7 @@ AddTaskCentralMult(Bool_t   mc=false,
     if (!task->GetManager().HasAcceptanceCorrection()) 
       Fatal("AddTaskCentralMult", "No acceptance correction defined!");
   }
-  task->SetDebugLevel(debug);
-  task->Configure("CentralAODConfig.C");
+  task->Configure(config);
   mgr->AddTask(task);
 
 
index c10c9f7..9c1a98f 100644 (file)
@@ -75,6 +75,7 @@ class TH1D;
  * Only minimum bias events with a @f$v_z@f$ within the defined cut
  * are analysed.
  *
+ * @deprecated This class is deprecated 
  * @ingroup pwglf_forward_aod
  */
 class CentralMultTask : public AliAnalysisTaskSE
@@ -104,6 +105,11 @@ public:
    * 
    */
   virtual ~CentralMultTask();
+  /** 
+   * Whether to use tracklets
+   * 
+   * @param use IF true, use tracklets
+   */
   void SetUseTracklets(Bool_t use) { fUseTracklets = use; }
   /** 
    * Initialise on master - does nothing
@@ -586,6 +592,12 @@ CentralMultTask::Terminate(Option_t *)
 }
 
 //========================================================================
+/** 
+ * Add task to do central dN/deta from tracks/tracklets 
+ * 
+ * @deprecated This function is deprecated 
+ * @return Newly created task
+ */
 inline AliAnalysisTask*
 AddTaskCentralTracks()
 {
index 3082939..269285a 100644 (file)
@@ -39,6 +39,14 @@ AddTaskCentraldNdeta(const char* trig     = "INEL",
   // --- Analysis manager --------------------------------------------
   AliAnalysisManager* mgr = AliAnalysisManager::GetAnalysisManager();
 
+  // --- Check that we have an AOD input handler ---------------------
+  UShort_t aodInput = 0;
+  if (!(aodInput = AliForwardUtil::CheckForAOD())) 
+    Fatal("","Cannot proceed without and AOD handler");
+  if (aodInput == 2 &&
+      !AliForwardUtil::CheckForTask("AliCentralMultiplicityTask")) 
+    Fatal("","The relevant task wasn't added to the train");
+
   // --- Make our object ---------------------------------------------
   AliCentraldNdetaTask* task = new AliCentraldNdetaTask("Central");
   task->SetMCFinalCorrFilename(mcanalysisfilename);
index e003d73..ca5fc11 100644 (file)
  */
 /**
  * @defgroup pwglf_forward_eloss Energy Loss Fits
+ *
+ * Fitting the energy loss @f$\Delta/\Delta_{mip}@f$ spectra 
+ *
  * @ingroup pwglf_forward_topical
  */
 
 /**
  * This is the macro to include the FMD energy fitter in a train.  
  * 
+ * @param mc      Assume MC input 
+ * @param useCent Use centrality information 
+ *
+ * @return Newly created task 
+ *
  * @ingroup pwglf_forward_eloss
  */
 AliAnalysisTask*
index cf888b2..bb4fa5d 100644 (file)
@@ -9,39 +9,34 @@
  * @ingroup pwglf_forward_scripts_tasks
  */
 /** 
- * @defgroup pwglf_forward_flow Flow 
- * @ingroup pwglf_forward_topical
- */
-/** 
- * Add Flow task to train 
+ * Add FMD event plane task to train 
  * 
- * @param type 
- * @param etabins 
  * @param mc 
- * @param addFlow 
- * @param addFType 
- * @param addFOrder 
  *
  * @ingroup pwglf_forward_flow
  */
 void AddTaskFMDEventPlane(Bool_t mc = kFALSE)
 {
+  // --- Get the analysis manager ------------------------------------
   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
-  if (!mgr) {
-    Error("AddTaskFMDEventPlane", "No analysis manager to connect to.");
-    return NULL;
-  }   
+  if (!mgr) Fatal("","No analysis manager to connect to.");
+
+  // --- Check that we have an AOD input handler ---------------------
+  UShort_t aodInput = 0;
+  if (!(aodInput = AliForwardUtil::CheckForAOD())) 
+    Fatal("","Cannot proceed without and AOD handler");
+  if (aodInput == 2 &&
+      !AliForwardUtil::CheckForTask("AliForwardMultiplicityBase")) 
+    Fatal("","The relevant task wasn't added to the train");
+
 
-  AliAODInputHandler* aodInput = dynamic_cast<AliAODInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
-   
-  Bool_t aod = kFALSE;
-  if (aodInput) aod = kTRUE;
-  if (!aod) {
-    Error("AddTaskFMDEventPlane", "No analysis manager to connect to.");
-    return NULL;
-  }
+  // --- Make the event plane task -----------------------------------
+  AliFMDEventPlaneTask* task = new AliFMDEventPlaneTask("FMDEventPlane");
+  task->GetEventPlaneFinder().SetUsePhiWeights(false);
+  if (mc) task->SetMCInput(true);
+  mgr->AddTask(task);
 
-  // --- Create containers for output --- //
+  // --- Create containers for output --------------------------------
   AliAnalysisDataContainer* sums = 
     mgr->CreateContainer("FMDEventPlaneSums", TList::Class(), 
                         AliAnalysisManager::kOutputContainer, 
@@ -50,17 +45,12 @@ void AddTaskFMDEventPlane(Bool_t mc = kFALSE)
     mgr->CreateContainer("FMDEventPlaneResults", TList::Class(), 
                         AliAnalysisManager::kParamContainer, 
                         AliAnalysisManager::GetCommonFileName());
-
-  // --- For the selected flow tasks the input and output is set --- //
-  
-  AliFMDEventPlaneTask* task = new AliFMDEventPlaneTask("FMDEventPlane");
-  task->GetEventPlaneFinder().SetUsePhiWeights(false);
-
-  if (mc) task->SetMCInput(true);
-
   mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
   mgr->ConnectOutput(task, 1, sums);
   mgr->ConnectOutput(task, 2, output);
 
   return;
 }
+/*
+ * EOF
+ */
index 48e619c..d276798 100644 (file)
@@ -9,58 +9,86 @@
  */
 /** 
  * @defgroup pwglf_forward_flow Flow 
+ *
+ * Code to deal with flow 
+ *
  * @ingroup pwglf_forward_topical
  */
 /** 
  * Add Flow task to train 
  * 
- * @param type 
- * @param etabins 
- * @param mc 
- * @param addFlow 
- * @param addFType 
- * @param addFOrder 
+ * @param type          Which moments to do 
+ * @param mc            Monte-carlo input
+ * @param dispVtx       Use satellite interactions 
+ * @param outlierCutFMD Cut to remove events with outliers 
+ * @param outlierCutSPD Cut to remove events with outliers 
+ * @param addFlow       Afterburn what (MC only)
+ * @param addFType      Afterburner parameterization
+ * @param addFOrder     Afterburder order 
  *
  * @ingroup pwglf_forward_flow
  */
-void AddTaskForwardFlow(TString type = "", 
-                        Bool_t mc = kFALSE,
-                        Bool_t dispVtx = kFALSE,
-                        TString addFlow = "",
-                        Int_t addFType = 0,
-                        Int_t addFOrder = 0)
+void AddTaskForwardFlow(TString  type          = "", 
+                        Bool_t   mc            = kFALSE,
+                       Bool_t   dispVtx       = kFALSE,
+                       Double_t outlierCutFMD = 4.1, 
+                       Double_t outlierCutSPD = 4.1,
+                        TString  addFlow       = "",
+                        Int_t    addFType      = 0,
+                        Int_t    addFOrder     = 0)
 {
+  // --- Get analysis manager ----------------------------------------
   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
-  if (!mgr) {
-    Error("AddFMDFlowTask", "No analysis manager to connect to.");
-    return NULL;
-  }   
+  if (!mgr) 
+    Fatal("","No analysis manager to connect to.");
 
-  AliAODInputHandler* aodInput = dynamic_cast<AliAODInputHandler*> (AliAnalysisManager::GetAnalysisManager()->GetInputEventHandler());
-   
-  Bool_t aod = kFALSE;
-  if (aodInput) aod = kTRUE;
-  if (!aod) {
-    Error("AddTaskForwardFlow", "No analysis manager to connect to.");
-    return NULL;
+  // --- Check that we have an AOD input handler ---------------------
+  UShort_t aodInput = 0;
+  if (!(aodInput = AliForwardUtil::CheckForAOD())) 
+    Fatal("","Cannot proceed without and AOD handler");
+  if (aodInput == 2 && 
+      (!AliForwardUtil::CheckForTask("AliForwardMultiplicityBase") ||
+       !AliForwardUtil::CheckForTask("AliCentralMultiplicityTask")))
+    Fatal("","The relevant tasks wasn't added to the train");
+
+  // --- For the selected flow tasks the input and output is set -----
+  AliForwardFlowTaskQC* task = 0;
+  if (mc) {
+    AliForwardMCFlowTaskQC* mcTask = new AliForwardMCFlowTaskQC("QCumulants");
+    // --- Set up adding flow to MC input ----------------------------
+    mcTask->SetUseImpactParameter(true);
+    mcTask->AddFlow(addFlow);
+    mcTask->AddFlowType(addFType);
+    mcTask->AddFlowOrder(addFOrder);
+    task = mcTask;
   }
+  else 
+    task = new AliForwardFlowTaskQC("QCumulants");
+  mgr->AddTask(task); 
 
-  // --- Check which harmonics to calculate --- //
-  Bool_t v2 = kTRUE;
-  Bool_t v3 = kTRUE;
-  Bool_t v4 = kTRUE;
-  Bool_t v5 = kTRUE;
-  Bool_t v6 = kTRUE;
+  // --- Check which harmonics to calculate --------------------------
+  Bool_t v1 = type.Contains("1");
+  Bool_t v2 = type.Contains("2");
+  Bool_t v3 = type.Contains("3");
+  Bool_t v4 = type.Contains("4");
+  Bool_t v5 = type.Contains("5");
+  Bool_t v6 = type.Contains("6");
+  task->SetDoHarmonics(v1, v2, v3, v4, v5, v6);
 
-  if (type.Length() > 0) {
-    if (!type.Contains("2")) v2 = kFALSE;
-    if (!type.Contains("3")) v3 = kFALSE;
-    if (!type.Contains("4")) v4 = kFALSE;
-    if (!type.Contains("5")) v5 = kFALSE;
-    if (!type.Contains("6")) v6 = kFALSE;
+  // --- Set non-default axis for vertices ---------------------------
+  TAxis* a = 0;
+  if (dispVtx) {
+    AliForwardFlowTaskQC::fgDispVtx = true;
+    a = new TAxis(6, 93.75, 318.75);
   }
+  else 
+    a = new TAxis(20, -10, 10);
+  task->SetVertexAxis(a);
+
+  // --- Set sigma cuts for outliers ---------------------------------
+  task->SetDetectorCuts(outlierCutFMD, outlierCutSPD);
 
-  // --- Create containers for output --- //
+  // --- Create containers for output --------------------------------
   AliAnalysisDataContainer* sums = 
     mgr->CreateContainer("FlowQCSums", TList::Class(), 
                         AliAnalysisManager::kOutputContainer, 
@@ -69,43 +97,10 @@ void AddTaskForwardFlow(TString type = "",
     mgr->CreateContainer("FlowQCResults", TList::Class(), 
                         AliAnalysisManager::kParamContainer, 
                         AliAnalysisManager::GetCommonFileName());
-
-  // --- For the selected flow tasks the input and output is set --- //
-  
-  AliForwardFlowTaskQC* task = 0;
-  if (mc) 
-    task = new AliForwardMCFlowTaskQC("QCumulants");
-  else
-    task = new AliForwardFlowTaskQC("QCumulants");
-  mgr->AddTask(task); 
-
-  // Set which harmonics to do
-  task->SetDoHarmonics(v2, v3, v4, v5, v6);
-  // Set non-default axis for vertices
-  TAxis* a = 0;
-  if (!dispVtx) a = new TAxis(20, -10, 10);
-//  if (!dispVtx) a = new TAxis(1, -1, 0);
-  if ( dispVtx) a = new TAxis(6, 93.75, 318.75);
-//  if ( dispVtx) a = new TAxis(21, -393.75, 393.75);
-  task->SetVertexAxis(a);
-  if ( dispVtx) Bool_t AliForwardFlowTaskQC::fgDispVtx = kTRUE;
-  // Set detector specific sigma cuts
-  task->SetDetectorCuts(4.10, 4.10);
-
-  // Set debug flag
-  task->SetDebugLevel(0);
-  // Set up adding flow to MC input
-  if (mc) {
-    AliForwardMCFlowTaskQC* mcTask = 
-      static_cast<AliForwardMCFlowTaskQC*>task;
-    mcTask->SetUseImpactParameter(true);
-    mcTask->AddFlow(addFlow);
-    mcTask->AddFlowType(addFType);
-    mcTask->AddFlowOrder(addFOrder);
-  }
   mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
   mgr->ConnectOutput(task, 1, sums);
   mgr->ConnectOutput(task, 2, output);
-
-  return;
 }
+/*
+ * EOF
+ */
index 6080d66..a32cf3b 100644 (file)
@@ -1,10 +1,15 @@
 /** 
  * @defgroup pwglf_forward_scripts Scripts used in the analysis
  *
+ * These scripts add tasks to the analysis train 
+ *
  * @ingroup pwglf_forward
  */
 /** 
- * @defgroup pwglf_forward_scripts_tasks Scripts to add tasks to manager 
+ * @defgroup pwglf_forward_scripts_tasks Add tasks to manager 
+ *
+ * Scripts to add tasks to the analysis manager 
+ *
  * @ingroup pwglf_forward_scripts
  */
 /**
 /**
  * This is the script to include the Forward multiplicity in a train.  
  * 
- * @param mc    Define as true for MC input. 
- * @param sys   Collision system (0: deduce, 1: pp, 2: pbpb, 3:pA)
- * @param sNN   Collision energy 
- * @param field L3 field setting. 
+ * @param mc      Define as true for MC input. 
+ * @param sys     Collision system (0: deduce, 1: pp, 2: pbpb, 3:pA)
+ * @param sNN     Collision energy 
+ * @param field   L3 field setting. 
+ * @param config  Configuration file to use 
  *
  * @return newly allocated analysis task 
  *
@@ -34,7 +40,7 @@ AddTaskForwardMult(Bool_t   mc,
                   UShort_t sys=0, 
                   UShort_t sNN=0, 
                   Short_t  field=0, 
-                  Int_t    debug=0)
+                  const char* config="ForwardAODConfig.C")
 {
   // --- Load libraries ----------------------------------------------
   gROOT->LoadClass("AliAODForwardMult", "libPWGLFforward2");
@@ -50,8 +56,7 @@ AddTaskForwardMult(Bool_t   mc,
   AliForwardMultiplicityBase* task = 0;
   if (mc) task = new AliForwardMCMultiplicityTask("FMD");
   else    task = new AliForwardMultiplicityTask("FMD");
-  task->SetDebugLevel(debug);
-  task->Configure("ForwardAODConfig.C");
+  task->Configure(config);
   mgr->AddTask(task);
   
   // --- Do a local initialisation with assumed values ---------------
index 06e1d4e..1973fbe 100644 (file)
@@ -9,6 +9,9 @@
  */
 /**
  * @defgroup pwglf_forward_qa Quality Assurance
+ * 
+ * Code to deal with Quality Assurance 
+ *
  * @ingroup pwglf_forward_topical
  */
 /**
@@ -17,6 +20,8 @@
  * @param mc       Monte-carlo input 
  * @param useCent  Use centrality 
  *
+ * @return newly constructured task object 
+ *
  * @ingroup pwglf_forward_eloss
  */
 AliAnalysisTask*
index cb58b96..98f8261 100644 (file)
@@ -39,6 +39,15 @@ AddTaskForwarddNdeta(const char* trig     = "INEL",
   // --- Analysis manager --------------------------------------------
   AliAnalysisManager* mgr = AliAnalysisManager::GetAnalysisManager();
 
+  // --- Check that we have an AOD input handler ---------------------
+  UShort_t aodInput = 0;
+  if (!(aodInput = AliForwardUtil::CheckForAOD())) 
+    Fatal("","Cannot proceed without and AOD handler");
+  if (aodInput == 2 &&
+      !AliForwardUtil::CheckForTask("AliForwardMultiplicityBase")) 
+    Fatal("","The relevant task wasn't added to the train");
+
+
   // --- Make our object ---------------------------------------------
   AliForwarddNdetaTask* task = new AliForwarddNdetaTask("Forward");
   //Set the filename of the corresponding MC analysis
index 104f72d..3f740ce 100644 (file)
@@ -1,20 +1,28 @@
+/** 
+ * Add a task to storing MC particles 
+ * 
+ * 
+ * @return Task 
+ */
 AliAnalysisTask*
 AddTaskMCParticleFilter() 
 {
   AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
-  if (!mgr) {
-    Error("AddTaskFMD", "No analysis manager to connect to.");
-    return NULL;
-  }   
+  if (!mgr) Fatal("", "No analysis manager to connect to.");
 
-  AliAnalysisTaskMCParticleFilter* mctask = new AliAnalysisTaskMCParticleFilter("mcfilter");
+  AliAnalysisTaskMCParticleFilter* mctask = 
+    new AliAnalysisTaskMCParticleFilter("mcfilter");
   mgr->AddTask(mctask);
   AliAnalysisDataContainer* histOut = 
     mgr->CreateContainer("mcfilter", TList::Class(), 
-                        AliAnalysisManager::kOutputContainer, "mcParticles.root");
+                        AliAnalysisManager::kOutputContainer, 
+                        "mcParticles.root");
   mgr->ConnectInput(mctask, 0, mgr->GetCommonInputContainer());
   mgr->ConnectOutput(mctask, 0, mgr->GetCommonOutputContainer());
   mgr->ConnectOutput(mctask, 1, histOut);
 
   return mctask;
 }
+/*
+ * EOF
+ */
index bdd864e..345583e 100644 (file)
@@ -107,7 +107,9 @@ public:
   const Char_t* GetName() const { return (fIsMC ? "CentralClustersMC" : "CentralClusters"); }
 
 protected: 
+  /** Whether this is MC */
   Bool_t  fIsMC;     // Whether this is from MC 
+  /** Histogram of @f$d^2N_{ch}/(d\eta d\phi)@f$ for this event */
   TH2D    fHist;     // Histogram of d^2N_{ch}/(deta dphi) for this event
   
   ClassDef(AliAODCentralMult,1); // AOD forward multiplicity 
index 275aba6..4a28347 100644 (file)
 class TBrowser;
 class TH1D;
 
+/** 
+ * Event-plane information from forward detectors 
+ * 
+ */
 class AliAODForwardEP : public TObject
 {
 public:
@@ -68,83 +72,83 @@ public:
    * @param option Passed verbatim to TH2::Print 
    */
   void Print(Option_t* option="") const;
- /*
-  * Get the name of the AOD object
-  *
-  * @return for now ForwardEP
-  */
+  /**
+   * Get the name of the AOD object
+   *
+   * @return for now ForwardEP
+   */
   const Char_t* GetName() const { return (fIsMC ? "ForwardEP" : "ForwardEP"); }
- /*
-  * Set the overall FMD eventplane
-  * 
-  * @param ep FMD EP
-  */
+  /**
+   * Set the overall FMD eventplane
+   * 
+   * @param ep FMD EP
+   */
   void SetEventplane(Double_t ep) { fEpT = ep; }
- /* 
-  * Get the overall FMD eventplane
-  *
-  * @return FMD EP
-  */
+  /**
+   * Get the overall FMD eventplane
+   *
+   * @return FMD EP
+   */
   Double_t GetEventplane() { return fEpT; }
- /*
-  * Set FMD eventplane from A side
-  *
-  * @param epA FMD A side EP
-  */
+  /**
+   * Set FMD eventplane from A side
+   *
+   * @param epA FMD A side EP
+   */
   void SetEventplaneA(Double_t epA) { fEpA = epA; }
- /*
-  * Get FMD eventplane from A side
-  *
-  * @return FMD A side EP
-  */
+  /**
+   * Get FMD eventplane from A side
+   *
+   * @return FMD A side EP
+   */
   Double_t GetEventplaneA() { return fEpA; }
- /*
-  * Set FMD eventplane from C side
-  *
-  * @param epC FMD C side EP
-  */
+  /**
+   * Set FMD eventplane from C side
+   *
+   * @param epC FMD C side EP
+   */
   void SetEventplaneC(Double_t epC) { fEpC = epC; }
- /*
-  * Get FMD eventplane from C side
-  *
-  * @return FMD C side EP
-  */
+  /**
+   * Get FMD eventplane from C side
+   *
+   * @return FMD C side EP
+   */
   Double_t GetEventplaneC() { return fEpC; }
- /*
-  * Set FMD eventplane 1 using random particles
-  *
-  * @param ep1 FMD EP 1 from random selection
-  */
+  /**
+   * Set FMD eventplane 1 using random particles
+   *
+   * @param ep1 FMD EP 1 from random selection
+   */
   void SetEventplane1(Double_t ep1) { fEp1 = ep1; }
- /* 
-  * Get FMD eventplane 1 from random particles
-  *
-  * @return FMD EP 1 from random selection
-  */
+  /** 
+   * Get FMD eventplane 1 from random particles
+   *
+   * @return FMD EP 1 from random selection
+   */
   Double_t GetEventplane1() { return fEp1; }
- /*
-  * Set FMD eventplane 2 using random particles
-  *
-  * @param ep2 FMD EP 2 from random selection
-  */
+  /**
+   * Set FMD eventplane 2 using random particles
+   *
+   * @param ep2 FMD EP 2 from random selection
+   */
   void SetEventplane2(Double_t ep2) { fEp2 = ep2; }
- /* 
-  * Get FMD eventplane 2 from random particles
-  *
-  * @return FMD EP 2 from random selection
-  */
+  /** 
+   * Get FMD eventplane 2 from random particles
+   *
+   * @return FMD EP 2 from random selection
+   */
   Double_t GetEventplane2() { return fEp2; }
- /*
-  * Get eta histogram from eta vs. Psi_2 calculatins
-  *
-  * @return Returns eta vs. Psi_2 histogram
-  */
+  /**
+   * Get eta histogram from eta vs. Psi_2 calculatins
+   *
+   * @return Returns eta vs. Psi_2 histogram
+   */
   const TH1D& GetHistogram() const { return fHist; } // Get histogram 
- /*
-  * Get eta histogram from eta vs. Psi_2 calculatins
-  *
-  * @return Returns eta vs. Psi_2 histogram
-  */
+  /**
+   * Get eta histogram from eta vs. Psi_2 calculatins
+   *
+   * @return Returns eta vs. Psi_2 histogram
+   */
   TH1D& GetHistogram() { return fHist; } // Get histogram 
 
 protected: 
index c8a357c..97336df 100644 (file)
@@ -230,6 +230,8 @@ public:
   Bool_t IsTriggerOrBits(UInt_t bits) const;
   /** 
    * Whether we have any trigger bits 
+   *
+   * @return true if we have some trigger 
    */
   Bool_t HasTrigger() const { return fTriggers != 0; } // Check for triggers
   /** 
@@ -420,13 +422,19 @@ public:
    */
   static UInt_t MakeTriggerMask(const char* what);
 protected: 
+  /** From MC or not */
   Bool_t   fIsMC;       // Whether this is from MC 
+  /** Histogram of @f$d^2N_{ch}/(d\eta d\phi)@f$ for this event */
   TH2D     fHist;       // Histogram of d^2N_{ch}/(deta dphi) for this event
+  /** Trigger bits */
   UInt_t   fTriggers;   // Trigger bit mask 
+  /** Interaction point @f$z@f$ coordinate */
   Float_t  fIpZ;        // Z coordinate of the interaction point
+  /** Centrality */
   Float_t  fCentrality; // Event centrality 
+  /** Number of clusters in @f$|\eta|<1@f$ */
   UShort_t fNClusters;  // Number of SPD clusters in |eta|<1
-
+  /** Invalid value for interaction point @f$z@f$ coordiante */
   static const Float_t fgkInvalidIpZ; // Invalid IpZ value 
   ClassDef(AliAODForwardMult,3); // AOD forward multiplicity 
 };
index 086beb2..7c08656 100644 (file)
@@ -107,10 +107,8 @@ protected:
    * figure out which strip(s) to assign the track to, and fill the @a
    * hits structure.
    * 
-   * @param esd      Base ESD structure 
    * @param event    MC event 
    * @param vz       IP z-coordinate
-   * @param output   Output of Base hits
    * @param primary  Primary information, if available. 
    * 
    * @return true 
@@ -152,7 +150,12 @@ protected:
    * 
    */
   virtual void BeginTrackRefs() {}
-  virtual Bool_t CheckTrackRef(AliTrackReference* /*ref*/) const { return true; }
+  /** 
+   * Check a track reference 
+   * 
+   * @return true if the track reference should be used
+   */
+  virtual Bool_t CheckTrackRef(AliTrackReference*) const { return true; }
   /** 
    * Called at before loop over track references
    * 
@@ -164,11 +167,9 @@ protected:
    * 
    * @param particle  Particle to store
    * @param mother    Ultimate mother of particle 
-   * @param longest   Longest track reference
-   * @param vz        Z coordinate of IP
-   * @param nC        Total number of track-references in this sector  
-   * @param nT               Number of distint strips hit in this sector
-   * @param output    Output structure 
+   * @param ref      Longest track reference
+   *
+   * @return Weight factor
    */  
   virtual Double_t StoreParticle(AliMCParticle*       particle, 
                                 const AliMCParticle* mother,
@@ -185,7 +186,6 @@ protected:
    * Get incident angle of this track reference
    * 
    * @param ref Track reference
-   * @param vz  Z coordinate of the IP
    * 
    * @return incident angle (in radians)
    */
index 5ad5676..92d8649 100644 (file)
@@ -38,8 +38,7 @@ AliBasedNdetaTask::AliBasedNdetaTask()
     fNormalizationScheme(kFull), 
     fSchemeString(0), 
     fTriggerString(0),
-    fFinalMCCorrFile(""), 
-    fIsESD(false)
+    fFinalMCCorrFile("")
 {
   // 
   // Constructor
@@ -70,8 +69,7 @@ AliBasedNdetaTask::AliBasedNdetaTask(const char* name)
     fNormalizationScheme(kFull), 
     fSchemeString(0),
     fTriggerString(0),
-    fFinalMCCorrFile(""), 
-    fIsESD(false)
+    fFinalMCCorrFile("")
 {
   // 
   // Constructor
@@ -113,8 +111,7 @@ AliBasedNdetaTask::AliBasedNdetaTask(const AliBasedNdetaTask& o)
     fNormalizationScheme(o.fNormalizationScheme), 
     fSchemeString(o.fSchemeString), 
     fTriggerString(o.fTriggerString),
-    fFinalMCCorrFile(o.fFinalMCCorrFile), 
-    fIsESD(o.fIsESD)
+    fFinalMCCorrFile(o.fFinalMCCorrFile)
 {
   DGUARD(0,0,"Copy construction of AliBasedNdetaTask");
 }
@@ -347,45 +344,11 @@ AliBasedNdetaTask::UserCreateOutputObjects()
   while ((bin = static_cast<CentralityBin*>(next()))) 
     bin->CreateOutputObjects(fSums);
   
-  // Check that we have an AOD input handler 
-  AliAnalysisManager* am = AliAnalysisManager::GetAnalysisManager();
-  AliAODInputHandler* ah = 
-    dynamic_cast<AliAODInputHandler*>(am->GetInputEventHandler());
-  if (!ah) { 
-    fIsESD = true;
-    const char* depName = GetTitle();
-    AliAnalysisTask* dep = am->GetTask(depName); // "Central"
-    if (!dep) { 
-      AliErrorF("The multiplicity task %s wasn't added to the train", depName);
-      fIsESD = false;
-    }
-  }
-  if (!fIsESD && !ah) AliFatal("No AOD input handler set in analysis manager");
-
 
-  // Post data for ALL output slots >0 here, to get at least an empty histogram
+  // Post data for ALL output slots >0 here, to get at least an empty
+  // histogram
   PostData(1, fSums); 
 }
-//____________________________________________________________________
-AliAODEvent*
-AliBasedNdetaTask::GetAODEvent(bool isESD)
-{
-  // Get the AOD event 
-  // 
-  // Parameters: 
-  //   isESD     Whether we have ESD input or not 
-  // 
-  // Return: 
-  //   Pointer to AOD event or null
-  DGUARD(fDebug,1,"Get the AOD event (%s analysis)", isESD ? "ESD" : "AOD");
-  AliAODEvent* aod = 0;
-
-  if (!isESD) aod = dynamic_cast<AliAODEvent*>(InputEvent());
-  else        aod = AODEvent();
-  if (!aod) AliError("Cannot get the AOD event");
-
-  return aod;
-}
   
 //____________________________________________________________________
 void 
@@ -399,7 +362,7 @@ AliBasedNdetaTask::UserExec(Option_t *)
   //
   // Main loop
   DGUARD(fDebug,1,"Analyse the AOD event");
-  AliAODEvent* aod = GetAODEvent(fIsESD);
+  AliAODEvent* aod = AliForwardUtil::GetAODEvent(this);
   if (!aod) return;
 
   
index cfff147..681e955 100644 (file)
@@ -26,6 +26,9 @@ class TObjArray;
 
 /** 
  * @defgroup pwglf_forward_tasks_dndeta dN/deta tasks 
+ *
+ * Code to produce @f$ dN/d\eta@f$
+ *
  * @ingroup pwglf_forward_tasks 
  */
 /**
@@ -100,6 +103,11 @@ public:
    * @{ 
    * @name Task configuration 
    */
+  /** 
+   * Set the debug level 
+   * 
+   * @param level Debug level
+   */
   virtual void SetDebugLevel(Int_t level);
   /** 
    * Set the vertex range to use 
@@ -312,8 +320,29 @@ public:
     kCross        = 0x00c,
     kStar         = 0x00e
   };
+  /** 
+   * Get the marker style from option bits
+   * 
+   * @param bits Option bits 
+   * 
+   * @return Marker style 
+   */
   static Int_t GetMarkerStyle(UShort_t bits);
+  /** 
+   * Get the marker option bits from a style 
+   * 
+   * @param style Style
+   * 
+   * @return option bits
+   */
   static UShort_t GetMarkerBits(Int_t style);
+  /** 
+   * Flip an option bit 
+   * 
+   * @param style Style parameter
+   * 
+   * @return New style 
+   */
   static Int_t FlipHollowStyle(Int_t style);
 protected:
   /** 
@@ -330,15 +359,6 @@ protected:
   // Forward declaration 
   class CentralityBin;
   /** 
-   * Retrieve the AOD event 
-   *
-   * @param isESD If true, assume the AOD event is the output 
-   * 
-   * @return Pointer to AOD event or null 
-   */
-  AliAODEvent* GetAODEvent(Bool_t isESD=false);
-
-  /** 
    * Create the CentralityBin objects if not already done.
    * 
    */
@@ -728,14 +748,16 @@ protected:
     /** 
      * Get the color of the markers
      *
-     * @return 
+     * @param fallback Fall-back color 
+     *
+     * @return Color for this centrality bin 
      */
     Int_t GetColor(Int_t fallback=kRed+2) const;
     /** 
      * Get list of results 
      * 
      * 
-     * @return 
+     * @return List of results
      */
     TList* GetResults() const { return fOutput; }
     /** 
@@ -760,9 +782,21 @@ protected:
      */
     TH1* GetResult(Int_t rebin, Bool_t sym, 
                   const char* postfix="") const;
-
+    /** 
+     * Set the debug level
+     * 
+     * @param lvl Debug level
+     */
     void SetDebugLevel(Int_t lvl);
   protected:
+    /** 
+     * Read in sum hisotgram from list 
+     * 
+     * @param list List to read from 
+     * @param mc   True for MC input 
+     * 
+     * @return true if sum histogram is found
+     */
     virtual Bool_t ReadSum(TList* list, bool mc=false);
     /** 
      * Create sum histogram 
@@ -818,7 +852,6 @@ protected:
   TNamed*         fSchemeString;     // Normalization scheme string
   TNamed*         fTriggerString;    // Trigger string 
   TString         fFinalMCCorrFile; //Filename for final MC corr
-  Bool_t          fIsESD;           // Whether we have ESD input or not
   
   ClassDef(AliBasedNdetaTask,6); // Determine multiplicity in base area
 };
index c03496c..aae4c4f 100644 (file)
@@ -171,10 +171,20 @@ public:
     /** 
      * Is initialized 
      * 
+     * @return true if initialized 
      */
     Bool_t IsInit() { return fIsInit; }
-    
+    /** 
+     * Check if we have the secondary correction
+     * 
+     * @return true if it is read in
+     */
     Bool_t HasSecondaryCorrection() const { return fSecmap != 0; }
+    /** 
+     * Check if we have the acceptance correction
+     * 
+     * @return true if it is read in
+     */
     Bool_t HasAcceptanceCorrection() const { return fAcceptance != 0; }
 
     /** 
@@ -276,6 +286,8 @@ public:
     TH1D* GetAcceptanceCorrection(UShort_t vtxbin) const;
     /** 
      * Get the secondary correction map object 
+     *
+     * @return The secondary correction map 
      */
     AliCentralCorrSecondaryMap* GetSecMap() const { return fSecmap; }
     /** 
@@ -292,7 +304,11 @@ public:
      */
     Bool_t WriteFile(UShort_t what, UShort_t sys, UShort_t cms, Short_t field, 
                     TObject* o, Bool_t full) const;
-
+    /** 
+     * Print the object 
+     * 
+     * @param option Not used
+     */
     void Print(Option_t* option="") const;
   private:
     
index 696f955..c31d8ca 100644 (file)
 class AliCopyHeaderTask : public AliAnalysisTaskSE
 {
 public:
+  /** 
+   * Constructor
+   * 
+   * @param name Name
+   */
   AliCopyHeaderTask(const char* name="header") 
     : AliAnalysisTaskSE(name)
   {}
+  /** 
+   * Copy constructor 
+   * 
+   * @param other Object to copy from 
+   */
   AliCopyHeaderTask(const AliCopyHeaderTask& other) 
     : AliAnalysisTaskSE(other)
   {}
+  /** 
+   * Destructor
+   */
   virtual ~AliCopyHeaderTask() {}
+  /** 
+   * Assignmen operator 
+   * 
+   * @param other Object to assing from 
+   * 
+   * @return Reference to this object 
+   */
   AliCopyHeaderTask& operator=(const AliCopyHeaderTask& other) 
   {
     AliAnalysisTaskSE::operator=(other);
@@ -43,7 +63,7 @@ public:
   virtual void   Terminate(Option_t *option);
   /* @} */
 
-  ClassDef(AliCopyHeaderTask,1);
+  ClassDef(AliCopyHeaderTask,1); // Task to copy header from ESD to AOD
 };
 
 #endif
index 13e6511..5c33a76 100644 (file)
@@ -2,14 +2,43 @@
 #define ALIDISPLACEDVERTEXSELECTION_H
 #include <TObject.h>
 class AliESDEvent;
+
+/** 
+ * Selection of events from satellite interactions 
+ */
 class AliDisplacedVertexSelection : public TObject 
 {
 public:
+  /** 
+   * Constructor 
+   */
   AliDisplacedVertexSelection();
+  /** 
+   * Copy constructor 
+   * 
+   * @param o Object to copy from 
+   */
   AliDisplacedVertexSelection(const AliDisplacedVertexSelection& o);
+  /** 
+   * Assingment operator 
+   * 
+   * @param o Object to assign from 
+   * 
+   * @return Reference to this object 
+   */
   AliDisplacedVertexSelection& operator=(const AliDisplacedVertexSelection& o);
-  
+  /** 
+   * Define the output 
+   * 
+   * @param l     List to add output to
+   * @param name  Name of the list 
+   */
   void Output(TList* l, const char* name=0) const;
+  /** 
+   * Print information 
+   * 
+   * @param option  Not used 
+   */
   void Print(Option_t* option="") const;
   /** 
    * Check for displaced vertices (M.Guilbaud) 
index 5a77798..8fff80d 100644 (file)
@@ -22,6 +22,8 @@ class TBrowser;
 /** 
  * @defgroup pwglf_forward_corr Corrections 
  * 
+ * Correction objects used 
+ *
  * @ingroup pwglf_forward
  */
 /** 
@@ -166,6 +168,8 @@ public:
      */
     Double_t* GetAs() const { return fA; }
     /**
+     * @param i Which weight to get 
+     *
      * @return Weights 
      */
     Double_t GetA(UShort_t i) const;    
@@ -194,6 +198,8 @@ public:
      */
     Double_t* GetEAs() const { return fEA; }
     /**
+     * @param i Which weight to get 
+     *
      * @return Error on weights
      */
     Double_t GetEA(UShort_t i) const;
@@ -298,6 +304,8 @@ public:
      * - 0 otherwise 
      * 
      * @param o Other object to compare to 
+     *
+     * @return See above
      */
     Int_t Compare(const TObject* o) const;
     /* @} */
@@ -350,6 +358,10 @@ public:
     Double_t GetLowerBound(Double_t f) const;
     /** 
      * Calculate the quality 
+     * 
+     * @param maxChi2nu   Maximum reduced @f$\chi^2@f$
+     * @param maxRelError Maximum relative error 
+     * @param leastWeight Least weight to use 
      */
     void CalculateQuality(Double_t maxChi2nu=fgMaxChi2nu, 
                          Double_t maxRelError=fgMaxRelError, 
@@ -393,6 +405,8 @@ public:
    * @param eta      Eta 
    * @param quality  Quality flag
    * @param f        Function from fit 
+   *
+   * @return true on success
    */  
   Bool_t SetFit(UShort_t d, Char_t r, Double_t eta, Int_t quality, 
                const TF1& f);
@@ -403,6 +417,8 @@ public:
    * @param r    Ring 
    * @param eta  Eta 
    * @param f    ELoss fit result - note, the object will take ownership
+   *
+   * @return true on success
    */  
   Bool_t SetFit(UShort_t d, Char_t r, Double_t eta, ELossFit* f);
   /** 
@@ -412,6 +428,8 @@ public:
    * @param r       Ring 
    * @param etaBin  Eta (bin number, 1->nBins)
    * @param f       ELoss fit result - note, the object will take ownership
+   *
+   * @return true on success
    */  
   Bool_t SetFit(UShort_t d, Char_t r, Int_t etaBin, ELossFit* f);
   /** 
@@ -438,6 +456,8 @@ public:
    *                  @f$ i=2,\ldots@f$ 
    * @param ea        Array of @f$ N-1@f$ errors on weights @f$ a_i@f$ for 
    *                  @f$ i=2,\ldots@f$ 
+   *
+   * @return true on success
    */
   Bool_t SetFit(UShort_t  d,      Char_t    r, Double_t eta, 
                Int_t     quality,UShort_t  n, 
index d1e0524..25f0647 100644 (file)
@@ -21,6 +21,8 @@ class TH2D;
 /** 
  * @defgroup pwglf_forward_algo Algorithms 
  *
+ * Various sub-algorithms used in the analysis 
+ *
  * @ingroup pwglf_forward 
  */
 /** 
index bcf3e74..43d5a45 100644 (file)
@@ -101,12 +101,17 @@ public:
    * @param hists    Histogram cache
    * @param vtxBin   Vertex bin 
    * @param lowFlux  Low flux flag. 
+   * @param cent     Centrality 
+   * @param vz       Vertex Z position
    * 
    * @return true on successs 
    */
-  virtual Bool_t Calculate(const AliESDFMD& fmd, 
+  virtual Bool_t Calculate(const AliESDFMD&        fmd, 
                           AliForwardUtil::Histos& hists, 
-                          UShort_t vtxBin, Bool_t lowFlux, Double_t cent=-1, Double_t vz=0);
+                          UShort_t                vtxBin, 
+                          Bool_t                  lowFlux, 
+                          Double_t                cent=-1, 
+                          Double_t                vz=0);
   /** 
    * Scale the histograms to the total number of events 
    * 
@@ -181,6 +186,11 @@ public:
    * SetMultCut) then that value is used.  If not, then the lower
    * value of the fit range for the enery loss fits is returned.
    * 
+   * @param d      Detector 
+   * @param r      Ring 
+   * @param eta    Psuedo-rapidity
+   * @param errors Factor in errors
+   *
    * @return Lower cut on multiplicity
    */
   Double_t GetMultCut(UShort_t d, Char_t r, Double_t eta, 
@@ -190,6 +200,11 @@ public:
    * SetMultCut) then that value is used.  If not, then the lower
    * value of the fit range for the enery loss fits is returned.
    * 
+   * @param d      Detector 
+   * @param r      Ring 
+   * @param ieta   Psuedo-rapidity bin
+   * @param errors Factor in errors
+   *
    * @return Lower cut on multiplicity
    */
   Double_t GetMultCut(UShort_t d, Char_t r, Int_t ieta, 
@@ -221,6 +236,8 @@ protected:
    * @param d     Detector 
    * @param r     Ring 
    * @param iEta  Eta bin 
+   *
+   * @return The maximum weight 
    */
   Int_t FindMaxWeight(const AliFMDCorrELossFit* cor,
                      UShort_t d, Char_t r, Int_t iEta) const;
index 55da4a4..e590b10 100644 (file)
@@ -328,6 +328,8 @@ protected:
      *                    is loosend by a factor of 2 
      * @param chi2nuCut   Cut on @f$ \chi^2/\nu@f$ - 
      *                    the reduced @f$\chi^2@f$ 
+     *
+     * @return List of fits 
      */
     TObjArray* Fit(TList* dir, 
                   const TAxis& eta,
index 8ff177e..c4cd0a0 100644 (file)
@@ -129,10 +129,18 @@ public:
    * @param dbg Debug level
    */
   void SetDebug(Int_t dbg);
-
+  /** 
+   * Set low cut on B
+   * 
+   * @param b Low cut
+   */
   void SetBLow(Float_t b) {fbLow = b;}
+  /** 
+   * Set high cut on B
+   * 
+   * @param b high cut
+   */
   void SetBHigh(Float_t b) {fbHigh = b;}
-
 protected: 
   /** 
    * Initialise the sub objects and stuff.  Called on first event 
@@ -144,8 +152,8 @@ protected:
   AliFMDEventInspector fEventInspector; // Algorithm
   AliFMDEnergyFitter   fEnergyFitter;   // Algorithm
   TList*               fList;           // Output list 
-  Float_t              fbLow;
-  Float_t              fbHigh;
+  Float_t              fbLow;           // What's this?
+  Float_t              fbHigh;          // What's this? 
   
   ClassDef(AliFMDEnergyFitterTask,1) // Forward multiplicity class
 };
index efee189..a08ec57 100644 (file)
@@ -295,10 +295,15 @@ protected:
    * 
    * @param esd  ESD event 
    * @param vz   On return, the vertex Z position 
+   * @param vx   On return, the vertex X position 
+   * @param vy   On return, the vertex Y position 
    * 
    * @return @c true on success, @c false otherwise 
    */
-  Bool_t ReadVertex(const AliESDEvent* esd, Double_t& vz, Double_t& vx, Double_t& vy);
+  Bool_t ReadVertex(const AliESDEvent* esd, 
+                   Double_t& vz, 
+                   Double_t& vx, 
+                   Double_t& vy);
   /** 
    * Read centrality from event 
    * 
index bb0eed9..abae40d 100644 (file)
@@ -409,7 +409,7 @@ AliFMDEventPlaneFinder::CalcQVectors(TH2D* h, TH1D* eHist)
 
 //_____________________________________________________________________
 Double_t
-AliFMDEventPlaneFinder::CalcEventplane(TVector2 v) const
+AliFMDEventPlaneFinder::CalcEventplane(const TVector2& v) const
 {
   //
   // Calculate the eventplane
index 226f12f..13d07c6 100644 (file)
@@ -24,6 +24,10 @@ class TString;
 class AliOADBContainer;
 class AliAODForwardEP;
 
+/**
+ * Find the event plane using the FMD
+ * 
+ */
 class AliFMDEventPlaneFinder : public TNamed
 {
 public:
@@ -55,15 +59,19 @@ public:
    * @return Reference to this object
    */
   AliFMDEventPlaneFinder& operator=(const AliFMDEventPlaneFinder& o);
- /** 
+  /** 
    * Initialize this sub-algorithm
    * 
+   * @param etaAxis  Eta axis to use 
    */
   virtual void Init(const TAxis& etaAxis);
   /** 
    * Do the calculations 
    * 
    * @param hists    Histogram cache
+   * @param esd      Event 
+   * @param aodEp    Output object 
+   * @param h        Output histogram
    * 
    * @return true on successs 
    */
@@ -84,71 +92,71 @@ public:
    *   - max  Print max weights 
    */
   void Print(Option_t* option="") const;
- /** 
+  /** 
    * Set the debug level.  The higher the value the more output 
    * 
    * @param dbg Debug level 
    */
   void SetDebug(Int_t dbg=1) { fDebug = dbg; }
- /*
-  * Calculate Q vectors
-  *
-  * @param h dN/detadphi histogram
-  * @param eHist histogram for ep vs. eta
-  */
+  /**
+   * Calculate Q vectors
+   *
+   * @param h dN/detadphi histogram
+   * @param eHist histogram for ep vs. eta
+   */
   void CalcQVectors(TH2D* h, TH1D* eHist);
- /*
-  * Calculate the eventplane from a vector
-  *
-  * @param v TVector2 of Q-vectors
-  *
-  * @return the eventplane as a double
-  */
-  Double_t CalcEventplane(TVector2 v) const;
- /*
-  * Set the run number, used for OADB object
-  *
-  * @param run Run number
-  */
+  /**
+   * Calculate the eventplane from a vector
+   *
+   * @param v TVector2 of Q-vectors
+   *
+   * @return the eventplane as a double
+   */
+  Double_t CalcEventplane(const TVector2& v) const;
+  /**
+   * Set the run number, used for OADB object
+   *
+   * @param run Run number
+   */
   void SetRunNumber(Int_t run);
- /*
-  * Get the run number
-  *
-  * @return returns the run number
-  */
+  /**
+   * Get the run number
+   *
+   * @return returns the run number
+   */
   Int_t GetRunNumber() { return fRunNumber; }
- /*
-  * Get the OADB phi distribution for flattening
-  */
+  /**
+   * Get the OADB phi distribution for flattening
+   */
   void GetPhiDist();
- /*
-  * Flag for setting the use of phi weights for flattening
-  * 
-  * @param use true or false
-  */
+  /**
+   * Flag for setting the use of phi weights for flattening
+   * 
+   * @param use true or false
+   */
   void SetUsePhiWeights(Bool_t use = kTRUE) { fUsePhiWeights = use; }
- /*
-  * Fill diagnostics hists
-  *
-  * @param fmdEP Object containing results of FMD EP calculations
-  */
+  /**
+   * Fill diagnostics hists
+   *
+   * @param fmdEP Object containing results of FMD EP calculations
+   */
   void FillHists(AliAODForwardEP* fmdEP);
- /*
-  * Set the OADB path, for using a custom OADB path and file
-  *
-  * @param fname Name of the custom OADB file, including path
-  */
+  /**
+   * Set the OADB path, for using a custom OADB path and file
+   *
+   * @param fname Name of the custom OADB file, including path
+   */
   void SetOADBPath(Char_t* fname) { fOADBFileName = fname; }
 
 protected:
- /*
-  * Get the phi weight from OADB histogram for the ep flattening
-  *
-  * @param etaBin which eta bin
-  * @param phiBin which phi bin
-  *
-  * @return phi weight for etaBin, phiBin as double
-  */
+  /**
+   * Get the phi weight from OADB histogram for the ep flattening
+   *
+   * @param etaBin which eta bin
+   * @param phiBin which phi bin
+   *
+   * @return phi weight for etaBin, phiBin as double
+   */
   Double_t GetPhiWeight(Int_t etaBin, Int_t phiBin) const;
  
   TList*            fList;              // List for diag. hists.
index 832ee92..201084c 100644 (file)
@@ -19,10 +19,6 @@ class AliAODForwardMult;
 class TH1D;
 class TH2D;
 
- /**
- * @defgroup pwg2_forward_tasks_flow Flow tasks 
- * @ingroup pwg2_forward_tasks
- */
 /**
  * Calculate the event plane in the forward regions using the FMD
  *
@@ -78,11 +74,11 @@ public:
    * @param option Not used 
    */
   virtual void Terminate(Option_t *option);
- /**
+  /**
   * Check AODForwardMult object for trigger, vertex and centrality
   * returns true if event is OK
   * 
-  * @param const aodfm
+  * @param aodfm Output object
   * 
   * @return Bool_t 
   */
index 689e4f2..f78a302 100644 (file)
@@ -22,6 +22,8 @@ class TH2;
 /** 
  * @defgroup pwglf_forward_mc  Monte-carlo code
  * 
+ * Sub-algorithms specific to Monte-carlo (simulation) productions 
+ *
  * @ingroup pwglf_forward
  */
 /** 
index 1901d31..e669525 100644 (file)
@@ -127,6 +127,7 @@ protected:
   /** 
    * Called at before loop over track references
    * 
+   * @param nRefs Number of references 
    */
   void EndTrackRefs(Int_t nRefs);
   /** 
@@ -135,30 +136,42 @@ protected:
    * 
    * @param particle  Particle to store
    * @param mother    Ultimate mother of particle 
-   * @param longest   Longest track reference
-   * @param vz        Z coordinate of IP
-   * @param nC        Total number of track-references in this sector  
-   * @param nT               Number of distint strips hit in this sector
-   * @param output    Output structure 
+   * @param ref       Longest track reference
+   *
+   * @return weight
    */  
   Double_t StoreParticle(AliMCParticle*       particle, 
                         const AliMCParticle* mother,
                         AliTrackReference*   ref) const;
-
+  /** 
+   * Structure holding the state of the `tracker' 
+   * 
+   */
   mutable struct State 
   {
-    Double_t angle;
-    UShort_t oldDetector;
-    Char_t   oldRing; 
-    UShort_t oldSector;
-    UShort_t oldStrip;
-    UShort_t startStrip;
-    UShort_t nRefs;
-    UShort_t nStrips;
-    UShort_t count;
-    AliTrackReference* longest; //! 
-
+    Double_t angle;            // Angle 
+    UShort_t oldDetector;      // Last detector
+    Char_t   oldRing;          // Last ring
+    UShort_t oldSector;        // Last sector
+    UShort_t oldStrip;         // Last strip 
+    UShort_t startStrip;       // First strip 
+    UShort_t nRefs;            // Number of references
+    UShort_t nStrips;          // Number of strips 
+    UShort_t count;            // Count of hit strips 
+    AliTrackReference* longest; //! Longest track through 
+    /** 
+     * Clear this state
+     * 
+     * @param alsoCount If true, also clear count 
+     */
     void Clear(Bool_t alsoCount=false);
+    /** 
+     * Assignment operator 
+     * 
+     * @param o Object to assign from 
+     * 
+     * @return Reference to this object 
+     */
     State& operator=(const State& o);
   } fState; // State 
   
index 4414a36..8b500bc 100644 (file)
 #define ALIFMDMULTCUTS_H
 #include <TObject.h>
 
+/**
+ * Cuts used when calculating the multiplicity 
+ * 
+ */
 class AliFMDMultCuts : public TObject 
 {
 public:
+  /** 
+   * CTOR
+   */
   AliFMDMultCuts();
+  /** 
+   * Copy CTOR
+   * 
+   * @param o Oject to copy from
+   */
   AliFMDMultCuts(const AliFMDMultCuts& o);
+  /** 
+   * Assignment operator 
+   * 
+   * @param o Object to asing from 
+   * 
+   * @return Reference to this object 
+   */
   AliFMDMultCuts& operator=(const AliFMDMultCuts& o);
+  /** 
+   * Get the multiplicity cuts for a specific ring and pseudo-rapidity 
+   * 
+   * @param d      Detector 
+   * @param r      Ring  
+   * @param eta    pseudo-rapidity 
+   * @param errors Get error on cut
+   * 
+   * @return Cut value 
+   */
   Double_t GetMultCut(UShort_t d, Char_t r, Double_t eta, Bool_t errors) const;
+  /** 
+   * Get the multiplicity cuts for a specific ring and pseudo-rapidity 
+   * 
+   * @param d      Detector 
+   * @param r      Ring  
+   * @param etabin pseudo-rapidity bin
+   * @param errors Get error on cut
+   * 
+   * @return Cut value 
+   */
   Double_t GetMultCut(UShort_t d, Char_t r, Int_t etabin, Bool_t errors) const;
-  
+  /** 
+   * Clear the cuts 
+   * 
+   */
   void UnsetMultCuts() { SetMultCuts(-1); }
+  /** 
+   * Set the cuts
+   * 
+   * @param fmd1i  Value for FMD1i 
+   * @param fmd2i  Value for FMD2i 
+   * @param fmd2o  Value for FMD2o 
+   * @param fmd3i  Value for FMD3i 
+   * @param fmd3o  Value for FMD3o 
+   */
   void SetMultCuts(Double_t fmd1i, 
                   Double_t fmd2i=-1, 
                   Double_t fmd2o=-1, 
                   Double_t fmd3i=-1, 
                   Double_t fmd3o=-1);
+  /** 
+   * Set the faction of most probable value 
+   * 
+   * @param frac Fraction
+   */
   void SetMPVFraction(Double_t frac=0) { fMPVFraction = frac; }
+  /** 
+   * Set the number times the Landau width
+   * 
+   * @param nXi Number of widths 
+   */
   void SetNXi(Double_t nXi) { fNXi = nXi; }
+  /** 
+   * Set wether to includle the Gaussian sigma in cut calculation
+   * 
+   * @param in If true, use Gaussian variance 
+   */
   void SetIncludeSigma(Bool_t in) { fIncludeSigma = in; }
+  /** 
+   * Print information
+   * 
+   * @param option Not used
+   */
   void Print(Option_t* option="") const;
+  /** 
+   * Define outputs 
+   * 
+   * @param l      List to add to 
+   * @param name   Name 
+   */
   void Output(TList* l, const char* name=0) const;
+  /** 
+   * Get a fixed cut value 
+   * 
+   * @param d Detector
+   * @param r Ring 
+   * 
+   * @return Fixed cut value 
+   */
   Double_t GetFixedCut(UShort_t d, Char_t r) const;
 protected:
-  Double_t fMultCuts[5];
-  Double_t fMPVFraction;
-  Double_t fNXi;
-  Bool_t   fIncludeSigma;
-  
+  Double_t fMultCuts[5];   // Fixed cuts
+  Double_t fMPVFraction;   // Most probably value fraction
+  Double_t fNXi;           // Times of Landau width
+  Bool_t   fIncludeSigma;  // Include Gaussian variance 
+   
   ClassDef(AliFMDMultCuts,1); // Cuts on ESD Mult 
 };
 
index 8d15bfa..eca8d1c 100644 (file)
@@ -55,10 +55,15 @@ class AliFMDFloatMap;
 class AliFMDSharingFilter : public TNamed
 {
 public: 
+  /** Status of a strip */
   enum Status { 
+    /** Nothing yet */
     kNone             = 1, 
+    /** Candidate for merging */
     kCandidate        = 2, 
+    /** This was merged into other strip */
     kMergedWithOther  = 3, 
+    /** Other strips was merged into this */
     kMergedInto       = 4
   };
   /** 
@@ -147,6 +152,7 @@ public:
    * @param input     Input 
    * @param lowFlux   If this is a low-flux event 
    * @param output    Output AliESDFMD object 
+   * @param zvtx      Vertex position 
    * 
    * @return True on success, false otherwise 
    */
@@ -177,11 +183,41 @@ public:
    */
   virtual void Print(Option_t* option="") const;
 
+  /** 
+   * Get the low cuts 
+   * 
+   * @return Reference to low cuts
+   */
   AliFMDMultCuts& GetLCuts() { return fLCuts; }
+  /** 
+   * Get the high cuts 
+   * 
+   * @return Reference to high cuts
+   */
   AliFMDMultCuts& GetHCuts() { return fHCuts; }
+  /** 
+   * Get the low cuts 
+   * 
+   * @return Reference to low cuts
+   */
   const AliFMDMultCuts& GetLCuts() const { return fLCuts; }
+  /** 
+   * Get the high cuts 
+   * 
+   * @return Reference to high cuts
+   */
   const AliFMDMultCuts& GetHCuts() const { return fHCuts; }
+  /** 
+   * Set the low cuts 
+   * 
+   * @param c Cuts object
+   */  
   void SetLCuts(const AliFMDMultCuts& c) { fLCuts = c; }
+  /** 
+   * Set the high cuts 
+   * 
+   * @param c Cuts object
+   */  
   void SetHCuts(const AliFMDMultCuts& c) { fHCuts = c; }
 protected:
   /** 
@@ -314,7 +350,24 @@ protected:
                               UShort_t t,
                               Bool_t&  usedPrev, 
                               Bool_t&  usedThis) const;
-  Double_t MultiplicityOfStrip(Double_t thisE,
+  /** 
+   * The actual algorithm 
+   * 
+   * @param thisE      This strips energy 
+   * @param prevE      Previous strip enery 
+   * @param nextE      Next strip energy 
+   * @param eta        Psuedo-rapidity
+   * @param lowFlux    Whether to use low flux settings
+   * @param d          Detector
+   * @param r          Ring 
+   * @param s          Sector 
+   * @param t          Strip
+   * @param prevStatus Previous status
+   * @param thisStatus This status 
+   * @param nextStatus Next status
+   * 
+   * @return The filtered signal in the strip
+   */  Double_t MultiplicityOfStrip(Double_t thisE,
                               Double_t prevE,
                               Double_t nextE,
                               Double_t eta,
index 695f682..45b2193 100644 (file)
@@ -78,11 +78,41 @@ public:
    * @param dirname  Directory name 
    */
   void SetFileDir(ECorrection what, const char* dirname);
+  /** 
+   * Set path to corrections 
+   * 
+   * @param d Path
+   */
   void SetSecondaryMapPath(const char* d) { SetFileDir(kSecondaryMap, d); }
+  /** 
+   * Set path to corrections 
+   * 
+   * @param d Path
+   */
   void SetDoubleHitPath(const char* d)    { SetFileDir(kDoubleHit, d); }
+  /** 
+   * Set path to corrections 
+   * 
+   * @param d Path
+   */
   void SetELossFitsPath(const char* d)    { SetFileDir(kELossFits, d); }
+  /** 
+   * Set path to corrections 
+   * 
+   * @param d Path
+   */
   void SetVertexBiasPath(const char* d)   { SetFileDir(kVertexBias, d); }
+  /** 
+   * Set path to corrections 
+   * 
+   * @param d Path
+   */
   void SetMergingEffPath(const char* d)   { SetFileDir(kMergingEfficiency, d); }
+  /** 
+   * Set path to corrections 
+   * 
+   * @param d Path
+   */
   void SetAcceptancePath(const char* d)   { SetFileDir(kAcceptance, d); }
   /** 
    * Read in corrections based on the parameters given 
index 228f688..e500728 100644 (file)
@@ -20,9 +20,11 @@ class TH2F;
 class TH2D;
 class TH3D;
 class TAxis;
-
- /**
+/**
  * @defgroup pwglf_forward_tasks_flow Flow tasks 
+ *
+ * Code to do with flow 
+ *
  * @ingroup pwglf_forward_tasks
  */
 /**
@@ -37,7 +39,6 @@ class TAxis;
  * @ingroup pwglf_forward_tasks_flow
  * @ingroup pwglf_forward_flow
  *
- *
  */
 class AliForwardFlowTaskQC : public AliAnalysisTaskSE
 {
@@ -91,41 +92,39 @@ public:
    * Set which harmonics to calculate. @f$ v_{1}@f$ to @f$ v_{4}@f$ is
    * available and calculated as default
    * 
-   * @param  v2 Do @f$ v_{2}$f$
-   * @param  v3 Do @f$ v_{3}$f$
-   * @param  v4 Do @f$ v_{4}$f$
-   * @param  v5 Do @f$ v_{5}$f$
-   * @param  v6 Do @f$ v_{6}$f$
+   * @param  v2 Do @f$ v_{2}@f$
+   * @param  v3 Do @f$ v_{3}@f$
+   * @param  v4 Do @f$ v_{4}@f$
+   * @param  v5 Do @f$ v_{5}@f$
+   * @param  v6 Do @f$ v_{6}@f$
    * 
    * @return void 
    */
   void SetDoHarmonics(Bool_t v2 = kTRUE, 
                      Bool_t v3 = kTRUE, Bool_t v4 = kTRUE,
-                     Bool_t v5 = kTRUE, Bool_t v6 = kTRUE) { 
-    fv[2] = v2; fv[3] = v3; fv[4] = v4; fv[5] = v5; fv[6] = v6;}
-  /*
+                     Bool_t v5 = kTRUE, Bool_t v6 = kTRUE) 
+  { 
+    fv[2] = v2; fv[3] = v3; fv[4] = v4; fv[5] = v5; fv[6] = v6;
+  }
+  /**
    * Set non-default vertex binning and range
    *
    * @param axis Use this vtx axis
-   *
-   * @return void
    */
   void SetVertexAxis(TAxis* axis) { fVtxAxis = axis; }
-  /*
+  /**
    * Set detector sigma cuts
    *
    * @param fmdCut FMD sigma cut
    * @param spdCut SPD sigma cut
-   *
-   * @return void
    */
   void SetDetectorCuts(Double_t fmdCut, Double_t spdCut) { fFMDCut = fmdCut; fSPDCut = spdCut; }
- /**
-  * Nested class to handle cumulant calculations in vertex bins
-  */
+  /**
+   * Nested class to handle cumulant calculations in vertex bins
+   */
   class VertexBin : public TNamed
   {
-    public:
+  public:
     /*
      * Constructor
      */
@@ -137,7 +136,8 @@ public:
      * @param vHigh Max vertex z-coordinate
      * @param moment Flow moment
      * @param type Data type (FMD/SPD/FMDTR/SPDTR/MC)
-     * @parma sym Data is symmetric in eta
+     * @param sym Data is symmetric in eta
+     * @param cut Cut value 
      */
     VertexBin(Int_t vLow, Int_t vHigh, 
               UShort_t moment, TString type,
@@ -153,11 +153,11 @@ public:
     /**
      * Assignment operator 
      * 
-     * @param VertexBin&
+     * @param v Object to assing from
      * 
-     * @return VertexBin& 
+     * @return reference to this 
      */
-    VertexBin& operator=(const VertexBin&);
+    VertexBin& operator=(const VertexBin& v);
     /**
      * Destructor 
      */
@@ -174,6 +174,7 @@ public:
      * Fill reference and differential flow histograms for analysis
      *
      * @param dNdetadphi 2D data histogram
+     * @param fCent Centrality
      *
      * @return false if bad event (det. hotspot)
      */
@@ -198,7 +199,7 @@ public:
      */
     void CumulantsTerminate(TList* inlist, TList* outlist);
 
-    protected:
+  protected:
     /*
      * Enumeration for ref/diff histograms
      */
@@ -272,19 +273,21 @@ protected:
    * @return Reference to this object 
    */
   AliForwardFlowTaskQC& operator=(const AliForwardFlowTaskQC&);
-  /*
+  /**
    * Initiate vertex bin objects
    */
   virtual void InitVertexBins();
-  /*
+  /**
    * Initiate diagnostics histograms
    */
   virtual void InitHists();
-  /*
+  /**
    * Analyze event
+   *
+   * @return true on success
    */
   virtual Bool_t Analyze();
-  /*
+  /**
    * Finalize analysis
    */
   virtual void Finalize();
index 7341120..2da8752 100644 (file)
@@ -33,6 +33,8 @@ public:
    * Assignment operator 
    * 
    * @param o Object to assign from 
+   *
+   * @return Reference to this object
    */
   AliForwardFlowWeights& operator=(const AliForwardFlowWeights& o);
   /** 
@@ -47,6 +49,35 @@ public:
    */
   virtual void Init(TList* l);
   /** 
+   * @a what is a bit-wise or of 
+   *
+   * - kPt      Weight according to transverse momentum 
+   * - kEta     Weight according to Pseudo-rapidity
+   * - kPID     Weight according to particle type 
+   * - kCent    Weight according to centrality 
+   * - kB       Weight according to impact parameter. 
+   *
+   * Note, that kCent and kB are mutually exclusive 
+   *
+   * @a type can be one of 
+   *
+   * - 0  No weighting 
+   *
+   * - 1 Pt is weighted as mean of @f$v_2{2}@f$ and @f$v_2{4}@f$ from
+   *     40-50% centrality, unity weight for p, other for @f$\pi@f$,
+   *     other particles fixed, and the width of the @f$\eta@f$
+   *     Gaussian is 9
+   *
+   * - 2 Pt is weighted by @f$v_2{2}@f$ from 40-50% centrality, fixed
+   *     PID weight, and the width of the @f$\eta@f$ Gaussian is 3
+   *
+   * - 3 Pt is weighted by @f$v_2{4}@f$ from 30-40% centrality, unity
+   *     weight for p, other for @f$\pi@f$, other particles fixed, and
+   *     the width of the @f$\eta@f$ Gaussian is 15
+   *
+   * - 4 Pt is weighted by @f$v_2{4}@f$ from 40-50% centrality, unity
+   *     weight for p, other for @f$\pi@f$, other particles fixed, and
+   *     the width of the @f$\eta@f$ Gaussian is 9
    * 
    * 
    * @param eta   Pseudo-rapidity of particle (@f$\eta@f$)
@@ -94,10 +125,48 @@ public:
    */
   static AliForwardFlowWeights* FromList(TList* l);
 protected:
+  /** 
+   * Calculate weight 
+   * 
+   * @param eta   Psuedo-rapidity 
+   * @param type  Parameterization type
+   * 
+   * @return weight
+   */
   Double_t CalcEtaWeight(Double_t eta, Int_t type) const;
+  /** 
+   * Calculate weight 
+   * 
+   * @param id    Particle (type) identifier 
+   * @param type  Parameterization type
+   * 
+   * @return weight
+   */
   Double_t CalcPidWeight(Int_t id, Int_t type) const;
+  /** 
+   * Calculate weight 
+   * 
+   * @param pt    Transverse momentum (GeV)
+   * @param type  Parameterization type
+   * 
+   * @return weight
+   */
   Double_t CalcPtWeight(Double_t pt, Int_t type) const;
+  /** 
+   * Calculate weight 
+   * 
+   * @param c Centrality
+   * 
+   * @return weight
+   */
   Double_t CalcCentWeight(Double_t c) const;
+  /** 
+   * Calculate weight 
+   * 
+   * @param b Impact parameters (fm)
+   * 
+   * @return weight
+   */
   Double_t CalcBWeight(Double_t b) const;
 
   TGraph* fV22Pt;    // Contribution from v2{2} as a function of pt
index 17463a1..6c06595 100644 (file)
 #include <TH2D.h>
 class TGraph;
 
- /**
- * @defgroup pwglf_forward_tasks_flow Flow tasks 
- * @ingroup pwglf_forward_tasks
- */
 /**
  * Calculate the flow in the forward regions using the Q cumulants method
  *
@@ -33,7 +29,6 @@ class TGraph;
  * @ingroup pwglf_forward_tasks_flow
  * @ingroup pwglf_forward_flow
  *
- *
  */
 class AliForwardMCFlowTaskQC : public AliForwardFlowTaskQC
 {
@@ -42,7 +37,7 @@ public:
    * Constructor
    */
   AliForwardMCFlowTaskQC();
-  /*
+  /**
    * Constructor
    *
    * @param name Name of task
@@ -71,25 +66,25 @@ public:
    * @return Bool_t 
    */
   virtual Bool_t GetCentrality(const AliAODForwardMult* aodfm);
-  /*
+  /**
    * Set use parametrization from impact parameter for centrality
    *
    * @param use Use impact par
    */
   void SetUseImpactParameter(Bool_t use) { fUseImpactPar = use; }
-  /*
+  /**
    * Set string to add flow to MC truth particles
    *
    * @param type String
    */
   void AddFlow(TString type = "") { fAddFlow = type; }
-  /*
+  /**
    * Set which function fAddFlow should use
    *
-   * @param type of AddFlow 
+   * @param number Type of AddFlow 
    */
   void AddFlowType(Int_t number = 0) { fAddType = number; }
-  /*
+  /**
    * Set which order of flow to add
    *
    * @param order Flow order 
@@ -97,7 +92,7 @@ public:
   void AddFlowOrder(Int_t order = 2) { fAddOrder = order; }
  
 protected:
-  /*
+  /**
    * Copy constructor
    *
    * @param o Object to copy from
@@ -106,22 +101,26 @@ protected:
   /** 
    * Assignment operator 
    * 
+   * @param o Object to assing from 
+   *
    * @return Reference to this object 
    */
   AliForwardMCFlowTaskQC& operator=(const AliForwardMCFlowTaskQC& o);
-  /*
+  /**
    * Initiate vertex bin objects
    */
   void InitVertexBins();
-   /*
+  /**
    * Initiate diagnostics histograms
    */
   void InitHists();
-  /*
+  /**
    * Analyze event
+   *
+   * @return true on success 
    */
   Bool_t Analyze();
-  /*
+  /**
    * Finalize analysis
    */
   void Finalize();
@@ -134,6 +133,8 @@ protected:
   Bool_t LoopAODMC();
   /**
    * Get centrality form MC impact parameter
+   *
+   * @return Centrality
    */
   Double_t GetCentFromB() const;
   /**
index dea8221..0726ab8 100644 (file)
@@ -30,64 +30,6 @@ class TTree;
 class TAxis;
 
 /** 
- * @mainpage ALICE PWGLF Forward Multiplcity Analysis 
- * 
- * This is the analysis code for analysis of the Forward data. 
- * 
- * @par Code overview 
- * 
- * See the <a href="modules.html">Modules</a> page 
- * 
- * @par Run.sh script 
- * 
- * @verbatim 
- * Usage: Run.sh [OPTIONS]
- * 
- * Do Pass1 and Pass2 on ESD files in current directory.  
- * 
- * Options:
- *     -h,--help               This help                  
- *     -n,--events N           Number of events            (-1)
- *     -1,--pass1              Run pass 1, only AOD        (0)
- *     -2,--pass2              Run pass 2, only Hists      (0)
- *     -3,--pass3              Draw results                (0)
- *     -v,--vz-min CM          Minimum value of vz         (-10)
- *     -V,--vz-max CM          Maximum value of vz         (10)
- *     -t,--trigger TYPE       Select trigger TYPE         (INEL)
- *     -b,--batch              Do batch processing         (0)
- *     -P,--proof NWORKERS     Run in PROOF(Lite) mode     (0)
- *     -M,--mc                 Run over MC data            (0)
- *     -g,--gdb                Run in GDB mode             (0)
- *     -E,--eloss              Run energy loss script      
- *      -r,--rebin              Rebin factor                (1)
- *      -C,--use-centrality     Run centrality task         (0)
- *     -O,--show-older         Show older data             (0)
- *     -J,--show-published     Show ALICE published data   (1)
- *     -R,--show-ratios        Show ratios to other data   (1)
- *     -Z,--show-asymmetry     Show asymmetry              (1)
- *     -S,--scheme SCHEME      Normalisation scheme        (full)
- *     -T,--title STRING       Title on plots              ()
- * 
- * TYPE is a comma or space separated list of 
- *  
- *   INEL            Inelastic triggers (V0A|V0C|SPD)
- *   INEL>0      As above + N_ch > 0 in -0.5<eta<+0.5
- *   NSD         Non-single diffractive ((VOA&VOC)|N_ch > 5 -1.9<eta<+1.9)
- * 
- * SCHEME is a comma or space separated list of 
- * 
- *   NONE          No event-level normalization except trivial one 
- *   EVENTLEVEL    Event-level normalization 
- *   ALTEVENTLEVEL Event-level normalization (alternative version)
- *   BACKGROUND    Not implemented yet 
- *   SHAPE         Shape correction 
- *   FULL          Same as EVENTLEVEL,BACKGROUND,SHAPE
- *   ALTFULL       Same as ALTEVENTLEVEL,BACKGROUND,SHAPE
- * 
- * If NWORKERS is 0, then the analysis will be run in local mode.
- * @endverbatim
- */
-/** 
  * @defgroup pwglf_forward PWGLF Forward analysis
  *
  * Code to do the multiplicity analysis in the forward psuedo-rapidity
@@ -104,9 +46,14 @@ class TAxis;
  */
 /** 
  * @defgroup pwglf_forward_topical Topical
+ *
+ * The code divided according to topic
  */
 /** 
  * @defgroup pwglf_forward_aod AOD
+ * 
+ * Code to do with AOD production 
+ *
  * @ingroup pwglf_forward_topical
  */
 /** 
@@ -255,9 +202,12 @@ public:
    * @return Reference to AliFMDEventPlaneFinder object 
    */
   virtual const AliFMDEventPlaneFinder& GetEventPlaneFinder() const = 0;
+  /* @} */
 
   /** 
-   * @} 
+   * Set the debug level 
+   * 
+   * @param dbg 
    */
   virtual void SetDebug(Int_t dbg) = 0;
   /** 
@@ -315,15 +265,23 @@ protected:
    * @return true if all present, false otherwise
    */  
   Bool_t CheckCorrections(UInt_t what) const;
-  /**
+  /** 
    * Read corrections
-   *
+   * 
+   * 
+   * @param pe  On return, the eta axis
+   * @param pv  On return ,the vertex axis 
+   * @param mc  True assume MC input
+   * 
+   * @return true ons succcss
    */
   virtual Bool_t ReadCorrections(const TAxis*& pe, 
                                 const TAxis*& pv,
                                 Bool_t mc=false);
   /**
    * Get the ESD event. IF this is the first event, initialise
+   *
+   * @return Pointer to ESD event structore 
    */
   virtual AliESDEvent* GetESDEvent();
   /** 
@@ -366,6 +324,7 @@ private:
 };
 
 #endif
+
 // Local Variables:
 //  mode: C++
 // End:
index 1f4d293..eea8013 100644 (file)
@@ -153,6 +153,11 @@ public:
    * @param dbg Debug level
    */
   void SetDebug(Int_t dbg);
+  /** 
+   * Print information 
+   * 
+   * @param option Not used
+   */
   void Print(Option_t* option="") const;
 protected: 
   /** 
@@ -164,9 +169,15 @@ protected:
    * @return true if all present, false otherwise
    */  
   Bool_t CheckCorrections(UInt_t what) const;
-  /**
+  /** 
    * Read corrections
-   *
+   * 
+   * 
+   * @param pe  On return, the eta axis
+   * @param pv  On return ,the vertex axis 
+   * @param mc  True assume MC input
+   * 
+   * @return true ons succcss
    */
   virtual Bool_t ReadCorrections(const TAxis*& pe, 
                                 const TAxis*& pv,
@@ -174,6 +185,8 @@ protected:
   /**
    * Get the ESD event. IF this is the first event, initialise.  If
    * initialisation failes, return a null pointer. 
+   *
+   * @return Pointer to ESD event structure, or null
    */
   virtual AliESDEvent* GetESDEvent();
   /** 
index b0548df..e99b614 100644 (file)
@@ -7,7 +7,11 @@
 #include "AliAODForwardMult.h"
 #include <AliLog.h>
 #include <AliInputEventHandler.h>
+#include <AliAODInputHandler.h>
+#include <AliAODHandler.h>
+#include <AliAODEvent.h>
 #include <AliESDEvent.h>
+#include <AliAnalysisTaskSE.h>
 #include <AliPhysicsSelection.h>
 #include <AliTriggerAnalysis.h>
 #include <AliMultiplicity.h>
@@ -148,6 +152,69 @@ AliForwardUtil::MagneticFieldString(Short_t f)
   return Form("%01dkG", f);
 }
 //_____________________________________________________________________
+AliAODEvent* AliForwardUtil::GetAODEvent(AliAnalysisTaskSE* task)
+{
+  // Check if AOD is the output event
+  AliAODEvent* ret = task->AODEvent();
+  if (ret) return ret; 
+  
+  // Check if AOD is the input event 
+  ret = dynamic_cast<AliAODEvent*>(task->InputEvent());
+  if (!ret) ::Warning("GetAODEvent", "No AOD event found");
+  
+  return ret; 
+}
+//_____________________________________________________________________
+UShort_t AliForwardUtil::CheckForAOD()
+{
+  AliAnalysisManager* am = AliAnalysisManager::GetAnalysisManager();
+  if (dynamic_cast<AliAODInputHandler*>(am->GetInputEventHandler())) {
+    ::Info("CheckForAOD", "Found AOD Input handler");
+    return 1;
+  }
+  if (dynamic_cast<AliAODHandler*>(am->GetOutputEventHandler())) {
+    ::Info("CheckForAOD", "Found AOD Output handler");
+    return 2;
+  }
+
+  ::Warning("CheckForAOD", 
+           "Neither and input nor output AOD handler is specified");
+  return 0;
+}
+//_____________________________________________________________________
+Bool_t AliForwardUtil::CheckForTask(const char* clsOrName, Bool_t cls)
+{
+  AliAnalysisManager* am = AliAnalysisManager::GetAnalysisManager();
+  if (!cls) { 
+    AliAnalysisTask* t = am->GetTask(clsOrName);
+    if (!t) { 
+      ::Warning("CheckForTask", "Task %s not found in manager", clsOrName);
+      return false;
+    }
+    ::Info("CheckForTask", "Found task %s", clsOrName);
+    return true;
+  }
+  TClass* dep = gROOT->GetClass(clsOrName);
+  if (!dep) { 
+    ::Warning("CheckForTask", "Unknown class %s for needed task", clsOrName);
+    return false;
+  }
+  TIter next(am->GetTasks());
+  TObject* o = 0;
+  while ((o = next())) { 
+    if (o->IsA()->InheritsFrom(dep)) {
+      ::Info("CheckForTask", "Found task of class %s: %s", 
+            clsOrName, o->GetName());
+      return true;
+    }
+  }
+  ::Warning("CheckForTask", "No task of class %s was found", clsOrName);
+  return false;
+}
+
+  
+  
+//_____________________________________________________________________
 Double_t AliForwardUtil::GetEtaFromStrip(UShort_t det, Char_t ring, UShort_t sec, UShort_t strip, Double_t zvtx)
 {
   //Calculate eta from strip with vertex (redundant with AliESDFMD::Eta but support displaced vertices)
index 8eae47a..67d5748 100644 (file)
@@ -23,6 +23,8 @@ class TH1;
 class TF1;
 class TAxis;
 class AliESDEvent;
+class AliAODEvent;
+class AliAnalysisTaskSE;
 
 /** 
  * Utilities used in the forward multiplcity analysis 
@@ -131,6 +133,35 @@ public:
    static const char* MagneticFieldString(Short_t field);
   /* @} */
 
+  //__________________________________________________________________
+  /** 
+   * Get the AOD event - either from the input (AOD analysis) or the
+   * output (ESD analysis)
+   * 
+   * @param task Task to do the investigation for
+   * 
+   * @return Found AOD event or null
+   */
+  static AliAODEvent* GetAODEvent(AliAnalysisTaskSE* task);
+  /** 
+   * Check if we have something that will provide and AOD event 
+   * 
+   * @return 0 if there's nothing that provide an AOD event, 1 if it
+   * is provided on the input (AOD analysis) or 2 if it is provided on
+   * the output (ESD analysis)
+   */
+  static UShort_t CheckForAOD();
+  /** 
+   * Check if we have a particular (kind) of task in our train
+   * 
+   * @param clsOrName  Class name or name of task 
+   * @param cls If true, look for a task of a particular class -
+   * otherwise search for a speficially name task
+   * 
+   * @return true if the needed task was found 
+   */
+  static Bool_t CheckForTask(const char* clsOrName, Bool_t cls=true);
+
   /** 
    * @{ 
    * @name Energy stragling functions 
@@ -618,6 +649,11 @@ public:
     { 
       return AliForwardUtil::RingColor(fDet, fRing);
     }
+    /** 
+     * The name of this ring 
+     * 
+     * @return Name of this ring 
+     */
     const char* GetName() const { return fName.Data(); } 
     UShort_t fDet;   // Detector
     Char_t   fRing;  // Ring
@@ -628,20 +664,73 @@ public:
   /* @} */
 
   //__________________________________________________________________
+  /**
+   * A guard idom for producing debug output 
+   * 
+   */
   struct DebugGuard 
   {
+    /** 
+     * Constructor 
+     * 
+     * @param lvl       Current level
+     * @param msgLvl    Target level 
+     * @param format    @c printf -like format
+     * 
+     * @return 
+     */
     DebugGuard(Int_t lvl, Int_t msgLvl, const char* format, ...);
+    /** 
+     * Destructor
+     */
     ~DebugGuard();
+    /** 
+     * Make a message 
+     * 
+     * @param lvl    Current level
+     * @param msgLvl Target level 
+     * @param format @c printf -like format
+     */
     static void Message(Int_t lvl, Int_t msgLvl, const char* format, ...);
   private:
+    /** 
+     * Output the message 
+     * 
+     * @param in    Direction
+     * @param msg   Message 
+     */
     static void Output(int in, TString& msg);
+    /** 
+     * Format a message 
+     * 
+     * @param out     Output is stored here
+     * @param format  @c printf -like format
+     * @param ap      List of arguments
+     */
     static void Format(TString& out, const char* format, va_list ap);
     TString fMsg;
   };
 private:
+  /** 
+   * Constructor 
+   */
   AliForwardUtil() {}
+  /** 
+   * Copy constructor 
+   * 
+   * @param o Object to copy from 
+   */
   AliForwardUtil(const AliForwardUtil& o) : TObject(o) {}
+  /** 
+   * Assingment operator 
+   * 
+   * 
+   * @return Reference to this object 
+   */
   AliForwardUtil& operator=(const AliForwardUtil&) { return *this; }
+  /** 
+   * Destructor
+   */
   ~AliForwardUtil() {}
   
 
@@ -651,8 +740,22 @@ private:
 // #ifdef LOG_NO_DEBUG
 // # define DGUARD(L,N,F,...) do {} while(false) 
 // #else
+/** 
+ * Macro to declare a DebugGuard
+ * 
+ * @param L Current debug level
+ * @param N Target debug level
+ * @param F @c printf -like Format 
+ */
 # define DGUARD(L,N,F,...)                                     \
   AliForwardUtil::DebugGuard _GUARD(L,N,F, ## __VA_ARGS__)
+/** 
+ * Macro to make a debug message, using DebugGuard::Message
+ * 
+ * @param L Current debug level
+ * @param N Target debug level
+ * @param F @c printf -like Format 
+ */
 # define DMSG(L,N,F,...)                                       \
   AliForwardUtil::DebugGuard::Message(L,N,F, ## __VA_ARGS__)
 // #endif
index f401804..87a460d 100644 (file)
@@ -46,6 +46,8 @@ public:
 protected:
   /** 
    * Copy constructor 
+   *
+   * @param o object to copy from 
    */
   AliForwarddNdetaTask(const AliForwarddNdetaTask& o);
   /** 
@@ -82,6 +84,10 @@ protected:
   AliBasedNdetaTask::CentralityBin* 
   MakeCentralityBin(const char* name, Short_t l, Short_t h) const;
 
+  /**
+   * A structure holding the per-centrality bin information 
+   * 
+   */
   class CentralityBin : public AliBasedNdetaTask::CentralityBin 
   {
   public:
index eb956aa..f9c190a 100644 (file)
@@ -54,6 +54,8 @@ public:
 protected:
   /** 
    * Copy constructor 
+   *
+   * @param o Object to copy from 
    */
   AliMCTruthdNdetaTask(const AliMCTruthdNdetaTask& o);
   /** 
index 34d11e8..1d95394 100644 (file)
@@ -67,19 +67,20 @@ public:
   /** 
    * Set the number of eta bins to group into a region
    * 
-   * @param n Number of eta bins per region
+   * @param nx Number of @f$\eta@f$ bins per region
+   * @param ny Number of @f$\phi@f$ bins per region
    */  
   void SetLumping(UShort_t nx, UShort_t ny);
   /** 
    * Set the number of X bins to group into a region
    * 
-   * @param n Number of eta bins per region
+   * @param nx Number of eta bins per region
    */  
   void SetXLumping(UShort_t nx) { SetLumping(nx, fYLumping); } //*MENU*
   /** 
    * Set the number of Y bins to group into a region
    * 
-   * @param n Number of eta bins per region
+   * @param ny Number of eta bins per region
    */  
   void SetYLumping(UShort_t ny) { SetLumping(fYLumping, ny); } //*MENU*
   /** 
@@ -94,12 +95,14 @@ public:
    * Initialize this object.  
    * 
    * Also book the cache histograms 
+   *
+   * @param xaxis The X-axis 
+   * @param yaxis The Y-axis 
    */
   void Define(const TAxis& xaxis, const TAxis& yaxis);
   /** 
    * Make output stuff for the passed list
    * 
-   * @param none
    */
   void MakeOutput();
   /** 
@@ -117,8 +120,8 @@ public:
   /** 
    * Fill in an observation 
    * 
-   * @param eta     Eta value 
-   * @param phi     Phi value
+   * @param strip   X axis bin number 
+   * @param sec     Y axis bin number 
    * @param hit     True if hit 
    * @param weight  Weight if this 
    */
@@ -126,6 +129,8 @@ public:
   /** 
    * Calculate result and store in @a output
    * 
+   * @param correct Whether to apply correction or not 
+   *
    * @return The result histogram (fBase overwritten)
    */
   TH2D* Result(Bool_t correct=true);
index ae90529..9802e0d 100644 (file)
@@ -110,14 +110,11 @@ protected:
   /** 
    * Store a particle hit in Base<i>dr</i>[<i>s,t</i>] in @a output
    * 
-   * 
    * @param particle  Particle to store
    * @param mother    Ultimate mother of particle 
-   * @param longest   Longest track reference
-   * @param vz        Z coordinate of IP
-   * @param nC        Total number of track-references in this sector  
-   * @param nT               Number of distint strips hit in this sector
-   * @param output    Output structure 
+   * @param ref       Longest track reference
+   *
+   * @return weight
    */  
   Double_t StoreParticle(AliMCParticle*       particle, 
                         const AliMCParticle* mother,
index 0c53ffa..86be1dc 100644 (file)
@@ -15,6 +15,8 @@
  * directory up-front in your ROOT macro path, and edit it to suit your
  * needs.
  * 
+ * @param task  Task to configure 
+ *
  * @ingroup pwglf_forward_aod
  */
 void
index 3993f57..192c526 100644 (file)
@@ -35,7 +35,9 @@
 #include <TImage.h>
 #include <TRandom.h>
 #include <fstream>
+/** Systematic error color */
 #define SYSERR_COLOR kBlue-10
+/** Systematic error style */
 #define SYSERR_STYLE 1001
 
 Double_t myFunc(Double_t* xp, Double_t* pp);
@@ -102,10 +104,22 @@ struct dNdetaDrawer
     fRangeParam->fSlave2Axis = 0;
     fRangeParam->fSlave2Pad  = 0;
   }
+  /** 
+   * Cpoy constructor 
+   */
   dNdetaDrawer(const dNdetaDrawer&) {}
+  /** 
+   * Assignment operator
+   * 
+   * 
+   * @return Reference to this object
+   */
   dNdetaDrawer& operator=(const dNdetaDrawer&) { return *this; }
 
   //__________________________________________________________________
+  /** 
+   * Destructor 
+   */
   virtual ~dNdetaDrawer()
   {
     if (fRatios  && fRatios->GetHists())  fRatios->GetHists()->Delete();
@@ -467,6 +481,8 @@ struct dNdetaDrawer
    * @param max   On return, maximum of data 
    * @param rmax  On return, maximum of ratios
    * @param amax  On return, maximum of left-right comparisons
+   *
+   * @return Array of results
    */
   TObjArray* 
   FetchResults(const TList* list, 
@@ -511,6 +527,13 @@ struct dNdetaDrawer
     return a;
   } 
   //__________________________________________________________________
+  /** 
+   * Get the color for a centrality bin
+   * 
+   * @param bin Centrality bin 
+   * 
+   * @return Color 
+   */
   Int_t GetCentralityColor(Int_t bin) const
   {
     UShort_t centLow  = fCentAxis->GetBinLowEdge(bin);
@@ -523,6 +546,12 @@ struct dNdetaDrawer
     return col;
   }
   //__________________________________________________________________
+  /** 
+   * Set attributed on a histogram 
+   * 
+   * @param h     Histogram
+   * @param color Color 
+   */
   void SetAttributes(TH1* h, Int_t color)
   {
     if (!h) return;
@@ -532,6 +561,12 @@ struct dNdetaDrawer
     // h->SetFillColor(color);
   }
   //__________________________________________________________________
+  /** 
+   * Set attributed on a graph 
+   * 
+   * @param g     Graph
+   * @param color Color 
+   */
   void SetAttributes(TGraph* g, Int_t color)
   {
     if (!g) return;
@@ -541,6 +576,10 @@ struct dNdetaDrawer
     // g->SetFillColor(color);
   }
   //__________________________________________________________________
+  /** 
+   * Modify the title 
+   * 
+   */
   void ModifyTitle(TNamed* /*h*/, const char* /*centTxt*/)
   {
     return;
@@ -560,6 +599,8 @@ struct dNdetaDrawer
    * @param max        On return, data maximum
    * @param rmax       On return, ratio maximum 
    * @param amax       On return, left-right maximum 
+   *
+   * @return Histogram of results 
    */
   TH1* FetchResults(const TList* list, 
                    const char*  name, 
@@ -1138,7 +1179,7 @@ struct dNdetaDrawer
    * @param list List to search 
    * @param name Object name to search for 
    * 
-   * @return 
+   * @return Histogram
    */
   TH1* FetchResult(const TList* list, const char* name) const 
   {
@@ -1208,8 +1249,6 @@ struct dNdetaDrawer
    * Rebin a histogram 
    * 
    * @param h     Histogram to rebin
-   * 
-   * @return 
    */
   virtual void Rebin(TH1* h) const
   { 
@@ -1371,9 +1410,9 @@ struct dNdetaDrawer
   /** 
    * Transform a graph into a histogram 
    * 
-   * @param g 
+   * @param g Graph
    * 
-   * @return 
+   * @return Histogram
    */
   TH1* Graph2Hist(const TGraphAsymmErrors* g) const
   {
@@ -1966,6 +2005,11 @@ Double_t myFunc(Double_t* xp, Double_t* pp)
 }
 
 //=== Stuff for auto zooming =========================================
+/** 
+ * Update canvas range 
+ * 
+ * @param p Parameter 
+ */
 void UpdateRange(dNdetaDrawer::RangeParam* p)
 {
   if (!p) { 
@@ -2000,6 +2044,11 @@ void UpdateRange(dNdetaDrawer::RangeParam* p)
 }
   
 //____________________________________________________________________
+/** 
+ * Called when user changes X range 
+ * 
+ * @param p Parameter
+ */
 void RangeExec(dNdetaDrawer::RangeParam* p)
 {
   // Event types: 
@@ -2022,6 +2071,10 @@ void RangeExec(dNdetaDrawer::RangeParam* p)
 
 //=== Steering functions
 //==============================================  
+/** 
+ * Display usage information
+ * 
+ */
 void
 Usage()
 {
index 60dff2c..8be7852 100644 (file)
@@ -15,6 +15,8 @@
  * directory up-front in your ROOT macro path, and edit it to suit your
  * needs.
  * 
+ * @param task  Task to configure 
+ *
  * @ingroup pwglf_forward_aod
  */
 void
index db980ab..f287602 100644 (file)
@@ -1,5 +1,8 @@
 /** 
  * @defgroup pwglf_forward_scripts_makers Maker scripts 
+ *
+ * Scripts to make parts of the analysis.  Users can execute these directly. 
+ *
  * @ingroup pwglf_forward_scripts
  */
 //====================================================================
 /** 
  * Run first pass of the analysis - that is read in ESD and produce AOD
  * 
- * If the ROOT AliEn interface library (libRAliEn) can be loaded, 
- * and the parameter @a name is not empty, then use the plugin to do
- * the analysis.  Note that in this case, the output is placed 
- * in a sub-directory named by @a name after escaping spaces and special 
- * characters 
- *
  * If PROOF mode is selected, then Terminate will be run on the master node 
  * in any case. 
  *
- * @param esddir     ESD input directory. Any file matching the pattern 
- *                   *AliESDs*.root are added to the chain 
- * @param nEvents    Number of events to process.  If 0 or less, then 
- *                   all events are analysed
- * @param proof      If larger then 1, run in PROOF-Lite mode with this 
- *                   many number of workers. 
- * @param mc         Data is assumed to be from simulations  
- * @param centrality Whether to use centrality or not 
  * @param name       Name of train - free form.  This will be the name
  *                   of the output directory if the plug-in is used 
+ * @param options    Option string
+ * @param runs       List of runs, or file name of file contain runs
+ * @param nEvents    Number of events to process.  If 0 or less, then 
+ *                   all events are analysed
  *
  * @ingroup pwglf_forward_aod
  */
-void MakeAOD(const char* esddir, 
-            Int_t       nEvents    = -1, 
-            Int_t       proof      = 0,
-            Bool_t      mc         = false,
-            Bool_t      centrality = true,
-            const char* name       = 0,
-            bool        debug      = false, 
-            bool        local      = false)
+void MakeAOD(TString     name       = "aod", 
+            TString     options    = "help",
+            TString     runs       = "",
+            Int_t       nEvents    = -1)
 {
-  // --- Possibly use plug-in for this -------------------------------
-  if ((name && name[0] != '\0') && gSystem->Load("libRAliEn") >= 0) {
-    const char* builder = 
-      "$(ALICE_ROOT)/PWGLF/FORWARD/analysis2/trains/BuildTrain.C";
-    gROOT->LoadMacro(builder);
-
-    BuildTrain("MakeAODTrain");
-
-    MakeAODTrain t(name, 0, 0, 0, centrality, false);
-    t.SetDataDir(esddir);
-    t.SetDataSet("");
-    t.SetProofServer(Form("workers=%d",proof));
-    t.SetUseGDB(debug);
-    t.Run(proof > 0 ? "PROOF" : 
-         local ? "LOCAL" : "GRID", "FULL", nEvents, mc, proof > 0);
-    return;
-  }
-
-  // --- Libraries to load -------------------------------------------
-  gROOT->Macro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/scripts/LoadLibs.C");
-
-  // --- Check for proof mode, and possibly upload pars --------------
-  if (proof> 0) { 
-    gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/scripts/LoadPars.C");
-    if (!LoadPars(proof)) { 
-      Error("MakeAOD", "Failed to load PARs");
-      return;
-    }
-  }
-  
-  // --- Our data chain ----------------------------------------------
-  gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/scripts/MakeChain.C");
-  TChain* chain = MakeChain("ESD", esddir,true);
-  // If 0 or less events is select, choose all 
-  if (nEvents <= 0) nEvents = chain->GetEntries();
-  
-  // --- Set the macro path ------------------------------------------
-  gROOT->SetMacroPath(Form("%s:$(ALICE_ROOT)/PWGLF/FORWARD/analysis2:"
-                          "$ALICE_ROOT/ANALYSIS/macros",
-                          gROOT->GetMacroPath()));
-
-  // --- Creating the manager and handlers ---------------------------
-  AliAnalysisManager *mgr  = new AliAnalysisManager(name, 
-                                                   "Forward multiplicity");
-  AliAnalysisManager::SetCommonFileName("forward.root");
-
-  // --- ESD input handler -------------------------------------------
-  AliESDInputHandler *esdHandler = new AliESDInputHandler();
-  mgr->SetInputEventHandler(esdHandler);      
-       
-  // --- Monte Carlo handler -----------------------------------------
-  if (mc) {
-    AliMCEventHandler* mcHandler = new AliMCEventHandler();
-    mgr->SetMCtruthEventHandler(mcHandler);
-    mcHandler->SetReadTR(true);    
-  }
-
-  // --- AOD output handler ------------------------------------------
-  AliAODHandler* aodHandler   = new AliAODHandler();
-  mgr->SetOutputEventHandler(aodHandler);
-  aodHandler->SetNeedsHeaderReplication();
-  aodHandler->SetOutputFileName("AliAOD.root");
-
-  // --- Add tasks ---------------------------------------------------
-  // Physics selection 
-  gROOT->LoadMacro("AddTaskPhysicsSelection.C");
-  AddTaskPhysicsSelection(mc, kTRUE, kFALSE);
-  // --- Fix up physics selection to give proper A,C, and E triggers -
-  AliInputEventHandler* ih =
-    static_cast<AliInputEventHandler*>(mgr->GetInputEventHandler());
-  AliPhysicsSelection* ps = 
-    static_cast<AliPhysicsSelection*>(ih->GetEventSelection());
-  // Ignore trigger class when selecting events.  This mean that we
-  // get offline+(A,C,E) events too
-  // ps->SetSkipTriggerClassSelection(true);
-  
-  // Centrality 
-  if(centrality) {
-    gROOT->LoadMacro("AddTaskCentrality.C");
-    AliCentralitySelectionTask* centTask = AddTaskCentrality();
-    centTask->SetPass(1);
-    if(mc)centTask->SetMCInput();
-  }
-
-  // Copy header information 
-  gROOT->LoadMacro("AddTaskCopyHeader.C");
-  AddTaskCopyHeader();
-
-  // FMD 
-  gROOT->LoadMacro("AddTaskForwardMult.C");
-  AddTaskForwardMult(mc);
-
-  // Central 
-  gROOT->LoadMacro("AddTaskCentralMult.C");
-  AddTaskCentralMult(mc);
-  
-  // --- Run the analysis --------------------------------------------
-  TStopwatch t;
-  if (!mgr->InitAnalysis()) {
-    Error("MakeAOD", "Failed to initialize analysis train!");
-    return;
-  }
-  // Skip terminate if we're so requested and not in Proof or full mode
-  mgr->SetSkipTerminate(false);
-  // Some informative output 
-  mgr->PrintStatus();
-  if (proof) mgr->SetDebugLevel(3);
-  if (mgr->GetDebugLevel() < 1 && !proof) 
-    mgr->SetUseProgressBar(kTRUE,100);
+  if (name.IsNull()) Fatal("MakeAOD", "Must specify a name");
+  gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/trains/RunTrain.C");
 
-  // Run the train 
-  t.Start();
-  Printf("=== RUNNING ANALYSIS on %9d events ==========================",
-        nEvents);
-  mgr->StartAnalysis(proof ? "proof" : "local", chain, nEvents);
-  t.Stop();
-  t.Print();
+  RunTrain("MakeAODTrain", name, options, runs, nEvents);
 }
 //
 // EOF
index 5348b39..3686c0c 100644 (file)
  */
 /** 
  * Run a pass on ESD data to produce the energ loss fits 
- * 
- * If the ROOT AliEn interface library (libRAliEn) can be loaded, 
- * and the parameter @a name is not empty, then use the plugin to do
- * the analysis.  Note that in this case, the output is placed 
- * in a sub-directory named by @a name after escaping spaces and special 
- * characters 
- *
- * If PROOF mode is selected, then Terminate will be run on the master node 
- * in any case. 
  *
- * @param esddir     ESD input directory. Any file matching the pattern 
- *                   *AliESDs*.root are added to the chain 
- * @param nEvents    Number of events to process.  If 0 or less, then 
- *                   all events are analysed
- * @param proof      If larger then 1, run in PROOF-Lite mode with this 
- *                   many number of workers. 
- * @param mc         Data is assumed to be from simulations  
- * @param cent       Whether to use centrality or not 
- * @param name       Name of train - free form.  This will be the name
- *                   of the output directory if the plug-in is used 
+ * @param name    Name of train
+ * @param options Comma separated list of options. Pass "help" for list
+ * @param runs    Comma separated list of run numbers.
+ * @param nEvents Number of events to process.  If 0 or less, then 
+ *                all events are analysed
  *
  * @ingroup pwglf_forward_eloss
  */
-void MakeELossFits(const char* esddir, 
+/** 
+ * 
+ * 
+ */void MakeELossFits(TString     name="eloss", 
+                  TString     options="help", 
+                  TString     runs="", 
                   Int_t       nEvents = 1000, 
-                  Int_t       proof   = 0,
-                  Bool_t      mc      = false,
-                  Bool_t      cent    = false,
-                  const char* name    = 0)
+)
 {
-  // --- Possibly use plug-in for this -------------------------------
-  if ((name && name[0] != '\0') && gSystem->Load("libRAliEn") >= 0) {
-    const char* builder = 
-      "$(ALICE_ROOT)/PWGLF/FORWARD/analysis2/trains/BuildTrain.C" 
-    gROOT->LoadMacro(builder);
-    BuildTrain("MakeFMDELossTrain");
-
-    MakeFMDELossTrain t(name, cent, false);
-    t.SetDataDir(esddir);
-    t.SetDataSet("");
-    t.SetProofServer(Form("workers=%d",proof));
-    t.Run(proof > 0 ? "PROOF" : "LOCAL", "FULL", nEvents, mc, proof > 0);
-    return;
-  }
-
-  // --- Libraries to load -------------------------------------------
-  gROOT->Macro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/scripts/LoadLibs.C");
-
-  // --- Check for proof mode, and possibly upload pars --------------
-  if (proof > 0) {
-    gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/scripts/LoadPars.C");
-    LoadPars(proof);
-  }
-  
-  // --- Our data chain ----------------------------------------------
-  gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/scripts/MakeChain.C");
-  TChain* chain = MakeChain("ESD",esddir, true);
-  chain->GetListOfFiles()->ls();
-  // If 0 or less events is select, choose all 
-  if (nEvents <= 0) nEvents = chain->GetEntries();
-  Info("MakeELossFits", "Will analyse %d events", nEvents);
-
-  // --- Set the macro path ------------------------------------------
-  gROOT->SetMacroPath(Form("%s:$(ALICE_ROOT)/PWGLF/FORWARD/analysis2:"
-                          "$ALICE_ROOT/ANALYSIS/macros",
-                          gROOT->GetMacroPath()));
-
-  // --- Creating the manager and handlers ---------------------------
-  AliAnalysisManager *mgr  = new AliAnalysisManager("Forward ELoss Train", 
-                                                   "Forward energy loss");
-  AliAnalysisManager::SetCommonFileName("forward_eloss.root");
-
-  // --- ESD input handler -------------------------------------------
-  AliESDInputHandler *esdHandler = new AliESDInputHandler();
-  mgr->SetInputEventHandler(esdHandler);      
-       
-  // --- Monte Carlo handler -----------------------------------------
-  if (mc) {
-    AliMCEventHandler* mcHandler = new AliMCEventHandler();
-    mgr->SetMCtruthEventHandler(mcHandler);
-    mcHandler->SetReadTR(true);    
-  }
-
-  // --- Add tasks ---------------------------------------------------
-  gROOT->LoadMacro("AddTaskPhysicsSelection.C");
-  AddTaskPhysicsSelection(mc, kTRUE, kFALSE);
-  
-  // Centrality 
-  if(cent) {
-    gROOT->LoadMacro("AddTaskCentrality.C");
-    AddTaskCentrality();
-  }
-  
-  // FMD ELoss fitter 
-  gROOT->LoadMacro("AddTaskFMDELoss.C");
-  AddTaskFMDELoss(mc, cent);
-
-  // --- Run the analysis --------------------------------------------
-  TStopwatch t;
-  if (!mgr->InitAnalysis()) {
-    Error("RunManager", "Failed to initialize analysis train!");
-    return;
-  }
-  // Some informative output 
-  mgr->PrintStatus();
-  // mgr->SetDebugLevel(3);
-  if (mgr->GetDebugLevel() < 1 && proof <= 0) 
-    mgr->SetUseProgressBar(kTRUE,100);
+  if (name.IsNull()) Fatal("MakeELossFits", "Must specify a name");
+  gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/trains/RunTrain.C");
 
-  // Run the train 
-  t.Start();
-  Printf("=== RUNNING ANALYSIS on %9d events ========================",nEvents);
-  mgr->StartAnalysis(proof > 0 ? "proof" : "local", chain, nEvents);
-  t.Stop();
-  t.Print();
+  RunTrain("MakeFMDELossTrain", name, options, runs, nEvents);
 }
 //
 // EOF
index a03e2ce..20c4493 100644 (file)
  * @par Outputs: 
  * - 
  *
+ * @param name     Name of train 
+ * @param options  Options @see RunTrain 
+ * @param runs     Options @see RunTrain 
+ * @param nEvents  Number of events to process, negative for all 
+ *
  * @ingroup pwglf_forward_flow
  */
-void MakeFMDEventPlane(TString data      = "", 
-                      Int_t   nEvents   = 0, 
-                       Bool_t  mc        = kFALSE,
-                      const char* name  = 0,
-                      Int_t   proof     = 0,
-                       Bool_t  gdb       = kFALSE)
+void MakeFMDEventPlane(TString name    = "fmdEP", 
+                      TString options = "help", 
+                      TString runs    = "", 
+                      Int_t   nEvents = -1)
 {
-  // --- Load libs ---------------------------------------------------
-  gROOT->Macro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/scripts/LoadLibs.C");
-
-  // --- Possibly use plug-in for this -------------------------------
-  if ((name && name[0] != '\0') && gSystem->Load("libRAliEn") >= 0) {
-    gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/trains/TrainSetup.C+");
-    gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/trains/MakeFMDEventPlaneTrain.C+");
-
-    MakeFMDEventPlaneTrain t(name, mc, false);
-    t.SetDataDir(data.Data());
-    t.SetDataSet("");
-    t.SetProofServer(Form("workers=%d", proof));
-    t.SetUseGDB(gdb);
-    t.Run(proof > 0 ? "proof" : "local", "full", nEvents, proof > 0);
-    return;
-  }
-
-  // --- Set the macro path ------------------------------------------
-  gROOT->SetMacroPath(Form("%s:$(ALICE_ROOT)/PWGLF/FORWARD/analysis2:"
-                          "$ALICE_ROOT/ANALYSIS/macros",
-                          gROOT->GetMacroPath()));
-
-  // --- Add to chain either AOD ------------------------------------
-  if (data.IsNull()) {
-    AliError("You didn't add a data file");
-    return;
-  }
-  gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/scripts/MakeChain.C");
-  TChain* chain = MakeChain("AOD", data.Data(), true);
-  
-  // If 0 or less events is select, choose all 
-  if (nEvents <= 0) nEvents = chain->GetEntries();
-
-  // --- Initiate the event handlers --------------------------------
-  AliAnalysisManager *mgr  = new AliAnalysisManager("FMD Event Plane", 
-                                                   "Event plane forward region");
-
-  // --- AOD input handler -------------------------------------------
-  AliAODInputHandler *aodInputHandler = new AliAODInputHandler();
-  mgr->SetInputEventHandler(aodInputHandler); 
-
-  // --- Add the tasks ---------------------------------------------
-  gROOT->LoadMacro("AddTaskFMDEventPlane.C");
-  AddTaskFMDEventPlane(mc);
-
-  // --- Run the analysis --------------------------------------------
-  TStopwatch t;
-  if (!mgr->InitAnalysis()) {
-    Error("MakeFMDEventPlane", "Failed to initialize analysis train!");
-    return;
-  }
-  mgr->PrintStatus();
-  Printf("****************************************");
-  Printf("Doing FMD event plane analysis on %d Events", nEvents);
-  Printf("****************************************");
-  // 
-  if (mgr->GetDebugLevel() < 1) 
-    mgr->SetUseProgressBar(kTRUE, nEvents < 10000 ? 100 : 1000);
-
-//  mgr->SetSkipTerminate(true);
+  if (name.IsNull()) Fatal("MakeFMDEventPlane", "Must specify a name");
+  gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/trains/RunTrain.C");
 
-  t.Start();
-  mgr->StartAnalysis("local", chain, nEvents);
-  t.Stop();
-  t.Print();
+  RunTrain("MakeFMDEventPlaneTrain", name, options, runs, nEvents);
 }
 //----------------------------------------------------------------
 //
index f37f382..891996b 100644 (file)
@@ -8,6 +8,7 @@
  * @ingroup pwg2_forward_scripts_makers
  * 
  */
+//====================================================================
 /**
  * Script to analyse AOD input for flow
  * 
  * @par Outputs: 
  * - 
  *
+ * @param name     Name of train 
+ * @param options  Options @see RunTrain 
+ * @param runs     Options @see RunTrain 
+ * @param nEvents  Number of events to process, negative for all 
+ *
  * @ingroup pwglf_forward_flow
  */
-void MakeFlow(const char* data  = "", 
-             Int_t   nEvents   = -1, 
-             TString type      = "", 
-              Bool_t  mc        = kFALSE,
-             const char* name  = 0,
-             Int_t   proof     = 0,
-             Bool_t  dispVtx   = kFALSE,
-             TString addFlow   = "",
-              Int_t   addFType  = 0,
-              Int_t   addFOrder = 0,
-              Bool_t  gdb       = kFALSE)
+void MakeFlow(TString name = "flow", 
+             TString options = "help", 
+             TString runs = "", 
+             Int_t   nEvents   = -1)
 {
-  // --- Load libs ---------------------------------------------------
-  gROOT->Macro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/scripts/LoadLibs.C");
-
-  Int_t debug = 0;
-
-  // --- Possibly use plug-in for this -------------------------------
-  if ((name && name[0] != '\0') && gSystem->Load("libRAliEn") >= 0) {
-    gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/trains/TrainSetup.C+");
-    gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/trains/MakeFlowTrain.C+");
-
-    char* tok = strtok(name, " ,:");
-    TString server = "", dataset = "", datadir = "", jobname = "";
-    if (tok[0] == NULL) Fatal("Input name invalid!");
-    if (strcmp(tok, "hehi00.nbi.dk") == 0) {
-      server = tok;
-      dataset = data;
-      datadir = "";
-      tok = strtok(NULL, " ,:");
-      jobname = tok;
-    } else {
-      server = Form("workers=%d", proof);
-      dataset = "";
-      datadir = data;
-      jobname = tok;
-    }
-    printf("Making flow train on server: %s\t with datadir: %s\t on dataset: %s\n", 
-           server.Data(), datadir.Data(), dataset.Data());
-
-    MakeFlowTrain t(jobname.Data(), type.Data(), mc, addFlow.Data(), addFType, addFOrder, false);
-    t.SetUseDispVtx(dispVtx);
-    t.SetProofServer(server.Data());
-    t.SetDataDir(datadir.Data());
-    t.SetDataSet(dataset.Data());
-    t.SetDebugLevel(debug);
-    t.SetUseGDB(gdb);
-    t.Run("proof", "full", nEvents, proof > 0);
-
-    return;
-  }
-
-  // --- Set the macro path ------------------------------------------
-  gROOT->SetMacroPath(Form("%s:$(ALICE_ROOT)/PWGLF/FORWARD/analysis2:"
-                          "$ALICE_ROOT/ANALYSIS/macros",
-                          gROOT->GetMacroPath()));
-
-  // --- Add to chain either AOD ------------------------------------
-  if (data == '\0') {
-    AliError("You didn't add a data file");
-    return;
-  }
-  gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/scripts/MakeChain.C");
-  TChain* chain = MakeChain("AOD", data, true);
-  // If 0 or less events is select, choose all 
-  if (nEvents <= 0) nEvents = chain->GetEntries();
-
-  // --- Initiate the event handlers --------------------------------
-  AliAnalysisManager *mgr  = new AliAnalysisManager("Forward Flow", 
-                                                   "Flow in the forward region");
-
-  // --- AOD input handler -------------------------------------------
-  AliAODInputHandler *aodInputHandler = new AliAODInputHandler();
-  mgr->SetInputEventHandler(aodInputHandler); 
-
-  // --- Add the tasks ---------------------------------------------
-  gROOT->LoadMacro("AddTaskForwardFlow.C");
-  AddTaskForwardFlow(type, mc, dispVtx, addFlow, addFType, addFOrder);
-  mgr->SetDebugLevel(debug);
-
-  // --- Run the analysis --------------------------------------------
-  TStopwatch t;
-  if (!mgr->InitAnalysis()) {
-    Error("MakeFlow", "Failed to initialize analysis train!");
-    return;
-  }
-  mgr->PrintStatus();
-  Printf("****************************************");
-  Printf("Doing flow analysis on %d Events", nEvents);
-  Printf("****************************************");
-  // 
-  if (mgr->GetDebugLevel() < 1) 
-    mgr->SetUseProgressBar(kTRUE, nEvents < 10000 ? 100 : 1000);
-
-//  mgr->SetSkipTerminate(true);
+  if (name.IsNull()) Fatal("MakeFlow", "Must specify a name");
+  gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/trains/RunTrain.C");
 
-  t.Start();
-  mgr->StartAnalysis("local", chain, nEvents);
-  t.Stop();
-  t.Print();
+  RunTrain("MakeFlowTrain", name, options, runs, nEvents);
 }
-//----------------------------------------------------------------
+//--------------------------------------------------------------------
 //
 // EOF
 //
index 186d747..b051fdb 100644 (file)
  * @ingroup pwglf_forward_scripts_makers
  */
 /** 
- * Run a pass on ESD data to produce the energ loss fits 
- * 
- * If the ROOT AliEn interface library (libRAliEn) can be loaded, 
- * and the parameter @a name is not empty, then use the plugin to do
- * the analysis.  Note that in this case, the output is placed 
- * in a sub-directory named by @a name after escaping spaces and special 
- * characters 
- *
- * If PROOF mode is selected, then Terminate will be run on the master node 
- * in any case. 
+ * Run a pass on ESD data to produce quality assurance data.
  *
- * @param esddir     ESD input directory. Any file matching the pattern 
- *                   *AliESDs*.root are added to the chain 
- * @param nEvents    Number of events to process.  If 0 or less, then 
- *                   all events are analysed
- * @param proof      If larger then 1, run in PROOF-Lite mode with this 
- *                   many number of workers. 
- * @param mc         Data is assumed to be from simulations  
- * @param cent       Whether to use centrality or not 
- * @param name       Name of train - free form.  This will be the name
- *                   of the output directory if the plug-in is used 
+ * @param name    Name of train
+ * @param options Comma separated list of options, pass "help" for list
+ * @param runs    Comma separated list of run numbers
+ * @param nEvents Number of events to process.  If 0 or less, then 
+ *                all events are analysed
  *
- * @ingroup pwglf_forward_eloss
+ * @ingroup pwglf_forward
  */
-void MakeForwardQA(const char* esddir, 
-                  Int_t       nEvents = 1000, 
-                  Int_t       proof   = 0,
-                  Bool_t      mc      = false,
-                  Bool_t      cent    = false,
-                  const char* name    = 0)
+/** 
+ * 
+ * 
+ */void MakeForwardQA(TString name    = "qa", 
+                     TString options = "help", 
+                     TString runs    = "", 
+                     Int_t   nEvents = -1)
 {
-  // --- Possibly use plug-in for this -------------------------------
-  if ((name && name[0] != '\0') && gSystem->Load("libRAliEn") >= 0) {
-    const char* builder = 
-      "$(ALICE_ROOT)/PWGLF/FORWARD/analysis2/trains/BuildTrain.C";
-    gROOT->LoadMacro(builder);
-
-    BuildTrain("MakeQATrain");
-
-    MakeQATrain t(name, cent, false);
-    t.SetDataDir(esddir);
-    t.SetDataSet("");
-    t.SetProofServer(Form("workers=%d",proof));
-    t.Run(proof > 0 ? "PROOF" : "LOCAL", "FULL", nEvents, mc, proof > 0);
-    return;
-  }
-
-  // --- Libraries to load -------------------------------------------
-  gROOT->Macro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/scripts/LoadLibs.C");
-
-  // --- Check for proof mode, and possibly upload pars --------------
-  if (proof > 0) {
-    gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/scripts/LoadPars.C");
-    LoadPars(proof);
-  }
-  
-  // --- Our data chain ----------------------------------------------
-  gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/scripts/MakeChain.C");
-  TChain* chain = MakeChain("ESD",esddir, true);
-  // If 0 or less events is select, choose all 
-  if (nEvents <= 0) nEvents = chain->GetEntries();
-  Info("MakeForwardQA", "Will analyse %d events", nEvents);
-
-  // --- Set the macro path ------------------------------------------
-  gROOT->SetMacroPath(Form("%s:$(ALICE_ROOT)/PWGLF/FORWARD/analysis2:"
-                          "$ALICE_ROOT/ANALYSIS/macros",
-                          gROOT->GetMacroPath()));
-
-  // --- Creating the manager and handlers ---------------------------
-  AliAnalysisManager *mgr  = new AliAnalysisManager("Forward QA Train", 
-                                                   "Forward QA");
-  AliAnalysisManager::SetCommonFileName("forward_qa.root");
-
-  // --- ESD input handler -------------------------------------------
-  AliESDInputHandler *esdHandler = new AliESDInputHandler();
-  mgr->SetInputEventHandler(esdHandler);      
-       
-  // --- Monte Carlo handler -----------------------------------------
-  if (mc) {
-    AliMCEventHandler* mcHandler = new AliMCEventHandler();
-    mgr->SetMCtruthEventHandler(mcHandler);
-    mcHandler->SetReadTR(true);    
-  }
-
-  // --- Add tasks ---------------------------------------------------
-  gROOT->LoadMacro("AddTaskPhysicsSelection.C");
-  AddTaskPhysicsSelection(mc, kTRUE, kFALSE);
-  
-  // Centrality 
-  if(cent) {
-    gROOT->LoadMacro("AddTaskCentrality.C");
-    AddTaskCentrality();
-  }
-  
-  // FMD ELoss fitter 
-  gROOT->LoadMacro("AddTaskForwardQA.C");
-  AddTaskForwardQA(mc, cent);
-
-  // --- Run the analysis --------------------------------------------
-  TStopwatch t;
-  if (!mgr->InitAnalysis()) {
-    Error("RunManager", "Failed to initialize analysis train!");
-    return;
-  }
-  // Some informative output 
-  mgr->PrintStatus();
-  // mgr->SetDebugLevel(3);
-  if (mgr->GetDebugLevel() < 1 && proof <= 0) 
-    mgr->SetUseProgressBar(kTRUE,100);
+  if (name.IsNull()) Fatal("MakeForwardQA", "Must specify a name");
+  gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/trains/RunTrain.C");
 
-  // Run the train 
-  t.Start();
-  Printf("=== RUNNING ANALYSIS on %9d events ========================",nEvents);
-  mgr->StartAnalysis(proof > 0 ? "proof" : "local", chain, nEvents);
-  t.Stop();
-  t.Print();
+  RunTrain("MakeQATrain", name, options, runs, nEvents);
 }
 //
 // EOF
index 7dd8118..fa24a6e 100644 (file)
@@ -1,6 +1,6 @@
 /**
  * @file   MakeMCCorr.C
- * @author Christian Holm Christensen <cholm@dalsgaard.hehi.nbi.dk>
+ * @author Christian Holm Christensen <cholm@nbi.dk>
  * @date   Tue Jul 12 10:06:07 2011
  * 
  * @brief  Generate MC corrections 
  */
 //====================================================================
 /** 
- * Generatew MC corrections 
+ * Generate MC corrections 
  * 
- * If the ROOT AliEn interface library (libRAliEn) can be loaded, 
- * and the parameter @a name is not empty, then use the plugin to do
- * the analysis.  Note that in this case, the output is placed 
- * in a sub-directory named by @a name after escaping spaces and special 
- * characters 
- * 
- * @param esddir     AOD input directory. Any file matching the pattern 
- *                   *AliAODs*.root are added to the chain 
- * @param nEvents    Number of events to process.  If 0 or less, then 
- *                   all events are analysed
- * @param vzMin      Least @f$ v_z@f$ (centimeter)
- * @param vzMax      Largest @f$ v_z@f$ (centimeter)
- * @param proof      If larger then 1, run in PROOF-Lite mode with this 
- *                   many number of workers. 
- * @param name       Name of train - free form.  This will be the name
- *                   of the output directory if the plug-in is used 
+ * @param name     Name of train
+ * @param options  Comma separated list options, pass "help" for list
+ * @param runs     Comma separated list of run numbers
+ * @param nEvents  Number of events to process.  If 0 or less, then 
+ *                 all events are analysed
  *
  * @ingroup pwglf_forward_corr
- * @ingroup pwglf_forward_scripts_makers
  */
-void MakeMCCorr(const char* esddir   = ".", 
-               Int_t       nEvents  = -1, 
-               Double_t    vzMin    = -10,
-               Double_t    vzMax    = +10,
-               Int_t       proof    = 0,
-               const char* name     = 0)
+void MakeMCCorr(TString name    = "mcCorr", 
+               TString options = "help", 
+               TString runs    = "", 
+               Int_t   nEvents = -1)
 {
-  if ((name && name[0] != '\0') && gSystem->Load("libRAliEn") >= 0) {
-
-    gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/trains/TrainSetup.C+");
-    gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/trains/MakeMCCorrTrain.C+");
-
-    MakeMCCorrTrain t(name);
-    t.SetDataDir(esddir);
-    t.SetDataSet("");
-    t.SetAllowOverwrite(true);
-    t.SetProofServer(Form("workers=%d",proof));
-    t.Run(proof > 0 ? "PROOF" : "LOCAL", "FULL", nEvents, proof > 0);
-    return;
-  }
-  // --- Libraries to load -------------------------------------------
-  gROOT->Macro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/scripts/LoadLibs.C");
-
-  // --- Check for proof mode, and possibly upload pars --------------
-  if (proof> 0) { 
-    gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/scripts/LoadPars.C");
-    LoadPars(proof);
-  }
-  
-  // --- Our data chain ----------------------------------------------
-  gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/scripts/MakeChain.C");
-  TChain* chain = MakeChain("ESD", esddir,true);
-  // If 0 or less events is select, choose all 
-  if (nEvents <= 0) nEvents = chain->GetEntries();
-
-  // --- Set the macro path ------------------------------------------
-  gROOT->SetMacroPath(Form("%s:$(ALICE_ROOT)/PWGLF/FORWARD/analysis2:"
-                          "$ALICE_ROOT/ANALYSIS/macros",
-                          gROOT->GetMacroPath()));
-
-  // --- Creating the manager and handlers ---------------------------
-  AliAnalysisManager *mgr  = new AliAnalysisManager(name, "Forward MC corr");
-  AliAnalysisManager::SetCommonFileName("forward_mccorr.root");
-
-  // --- ESD input handler -------------------------------------------
-  AliESDInputHandler *esdHandler = new AliESDInputHandler();
-  mgr->SetInputEventHandler(esdHandler);      
-       
-  // --- Monte Carlo handler -----------------------------------------
-  AliMCEventHandler* mcHandler = new AliMCEventHandler();
-  mgr->SetMCtruthEventHandler(mcHandler);
-  mcHandler->SetReadTR(true);    
-
-  // --- Add Physics Selection ---------------------------------------
-  // Physics selection 
-  gROOT->LoadMacro("AddTaskPhysicsSelection.C");
-  AddTaskPhysicsSelection(kTRUE, kTRUE, kFALSE);
-  // --- Fix up physics selection to give proper A,C, and E triggers -
-  AliInputEventHandler* ih =
-    static_cast<AliInputEventHandler*>(mgr->GetInputEventHandler());
-  AliPhysicsSelection* ps = 
-    static_cast<AliPhysicsSelection*>(ih->GetEventSelection());
-  // Ignore trigger class when selecting events.  This mean that we
-  // get offline+(A,C,E) events too
-  // ps->SetSkipTriggerClassSelection(true);
-
-  // --- Add our task ------------------------------------------------
-  gROOT->LoadMacro("AddTaskForwardMCCorr.C");
-  AddTaskForwardMCCorr();
+  if (name.IsNull()) Fatal("MakeMCCorr", "Must specify a name");
+  gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/trains/RunTrain.C");
 
-  gROOT->LoadMacro("AddTaskCentralMCCorr.C");
-  AddTaskCentralMCCorr();
-  
-  // --- Run the analysis --------------------------------------------
-  TStopwatch t;
-  if (!mgr->InitAnalysis()) {
-    Error("MakedNdeta", "Failed to initialize analysis train!");
-    return;
-  }
-  // Skip terminate if we're so requested and not in Proof or full mode
-  mgr->SetSkipTerminate(false);
-  // Some informative output 
-  mgr->PrintStatus();
-  // mgr->SetDebugLevel(3);
-  if (mgr->GetDebugLevel() < 1 && !proof) 
-    mgr->SetUseProgressBar(kTRUE,100);
-  
-  // Run the train 
-  t.Start();
-  Printf("=== RUNNING ANALYSIS ==================================");
-  mgr->StartAnalysis(proof ? "proof" : "local", chain, nEvents);
-  t.Stop();
-  t.Print();
+  RunTrain("MakeMCCorrTrain", name, options, runs, nEvents);
 }
 //
 // EOF
index 8351a01..f3204df 100644 (file)
  * 
  * @ingroup pwglf_forward_scripts_makers
  */
+//====================================================================
 /** 
  * Run second pass analysis - make @f$ dN/d\eta@f$
  * 
- * If the ROOT AliEn interface library (libRAliEn) can be loaded, 
- * and the parameter @a name is not empty, then use the plugin to do
- * the analysis.  Note that in this case, the output is placed 
- * in a sub-directory named by @a name after escaping spaces and special 
- * characters 
- * 
- * @param aoddir     AOD input directory. Any file matching the pattern 
- *                   *AliAODs*.root are added to the chain 
- * @param nEvents    Number of events to process.  If 0 or less, then 
- *                   all events are analysed
- * @param trig       Trigger to use 
- * @param useCent    Whether to use centrality or not 
- * @param scheme     Normalisation scheme 
- * @param vzMin      Least @f$ v_z@f$ (centimeter)
- * @param vzMax      Largest @f$ v_z@f$ (centimeter)
- * @param proof      If larger then 1, run in PROOF-Lite mode with this 
- *                   many number of workers. 
+ * If PROOF mode is selected, then Terminate will be run on the master node 
+ * in any case. 
+ *
  * @param name       Name of train - free form.  This will be the name
  *                   of the output directory if the plug-in is used 
- * @param mcfile     Final MC corrections from this, if present
+ * @param options    Option string
+ * @param runs       List of runs, or file name of file contain runs
+ * @param nEvents    Number of events to process.  If 0 or less, then 
+ *                   all events are analysed
  *
- * @ingroup pwglf_forward_dndeta
+ * @ingroup pwglf_forward_aod
  */
-void MakedNdeta(const char* aoddir   = ".", 
-               Int_t       nEvents  = -1, 
-               const char* trig     = "INEL",
-               Bool_t      useCent  = false,
-               const char* scheme   = 0,
-               Double_t    vzMin    = -10,
-               Double_t    vzMax    = +10,
-               Int_t       proof    = 0,
-               const char* name     = 0,
-               const char* mcfile   = 0)
+void MakedNdeta(TString     name     = "dndeta", 
+               TString     options  = "help", 
+               TString     runs     = "",
+               Int_t       nEvents  = -1)
 {
-  if ((name && name[0] != '\0') && gSystem->Load("libRAliEn") >= 0) {
-    gROOT->SetMacroPath(Form("%s:$(ALICE_ROOT)/PWGLF/FORWARD/analysis2:"
-                            "$ALICE_ROOT/ANALYSIS/macros",
-                            gROOT->GetMacroPath()));
-    gSystem->AddIncludePath("-I${ALICE_ROOT}/include");
-    gSystem->Load("libANALYSIS");
-    gSystem->Load("libANALYSISalice");
-    gROOT->LoadMacro("TrainSetup.C+");
-    MakedNdetaTrain t(name, trig, vzMin, vzMax, scheme, useCent, false);
-    t.SetDataDir(aoddir);
-    t.SetDataSet("");
-    t.SetAllowOverwrite(true);
-    t.SetProofServer(Form("workers=%d",proof));
-    t.Run(proof > 0 ? "PROOF" : "LOCAL", "FULL", nEvents, proof > 0);
-    return;
-  }
-  // --- Libraries to load -------------------------------------------
-  gROOT->Macro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/scripts/LoadLibs.C");
-
-  // --- Check for proof mode, and possibly upload pars --------------
-  if (proof> 0) { 
-    gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/scripts/LoadPars.C");
-    LoadPars(proof);
-  }
-  
-  // --- Our data chain ----------------------------------------------
-  gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/scripts/MakeChain.C");
-  TChain* chain = MakeChain("AOD", aoddir,true);
-  // If 0 or less events is select, choose all 
-  if (nEvents <= 0) nEvents = chain->GetEntries();
-
-  // --- Set the macro path ------------------------------------------
-  gROOT->SetMacroPath(Form("%s:$(ALICE_ROOT)/PWGLF/FORWARD/analysis2:"
-                          "$ALICE_ROOT/ANALYSIS/macros",
-                          gROOT->GetMacroPath()));
-
-  // --- Creating the manager and handlers ---------------------------
-  AliAnalysisManager *mgr  = new AliAnalysisManager(name, "Forward dN/deta");
-  AliAnalysisManager::SetCommonFileName("forward_dndeta.root");
-
-  // --- ESD input handler -------------------------------------------
-  AliAODInputHandler *aodInputHandler = new AliAODInputHandler();
-  mgr->SetInputEventHandler(aodInputHandler);      
-       
-  // --- Add tasks ---------------------------------------------------
-  // Forward 
-  gROOT->LoadMacro("AddTaskForwarddNdeta.C");
-  AddTaskForwarddNdeta(trig, vzMin, vzMax, useCent, scheme, true, mcfile);
-  // Central
-  gROOT->LoadMacro("AddTaskCentraldNdeta.C");
-  AddTaskCentraldNdeta(trig, vzMin, vzMax, useCent, scheme,false, mcfile);
-  // MC
-  gROOT->LoadMacro("AddTaskMCTruthdNdeta.C");
-  AddTaskMCTruthdNdeta(trig, vzMin, vzMax, useCent, scheme);
+  if (name.IsNull()) Fatal("MakedNdeta", "Must specify a name");
+  gROOT->LoadMacro("$ALICE_ROOT/PWGLF/FORWARD/analysis2/trains/RunTrain.C");
 
-  
-  // --- Run the analysis --------------------------------------------
-  TStopwatch t;
-  if (!mgr->InitAnalysis()) {
-    Error("MakedNdeta", "Failed to initialize analysis train!");
-    return;
-  }
-  // Skip terminate if we're so requested and not in Proof or full mode
-  mgr->SetSkipTerminate(false);
-  // Some informative output 
-  mgr->PrintStatus();
-  // mgr->SetDebugLevel(3);
-  if (mgr->GetDebugLevel() < 1 && !proof) 
-    mgr->SetUseProgressBar(kTRUE,100);
-  
-  // Run the train 
-  t.Start();
-  Printf("=== RUNNING ANALYSIS ==================================");
-  mgr->StartAnalysis(proof ? "proof" : "local", chain, nEvents);
-  t.Stop();
-  t.Print();
+  RunTrain("MakedNdetaTrain", name, options, runs, nEvents);
 }
 //
 // EOF
index 30fbbe8..2ce3c57 100644 (file)
@@ -2,6 +2,8 @@
 /**
  * @defgroup pwglf_forward_otherdata  External data 
  *
+ * Collection of external data points for comparisons and the like 
+ *
  * @ingroup pwglf_forward_scripts
  */
 /**
@@ -122,6 +124,12 @@ SetGraphAttributes(TGraph* g, Int_t trig, Int_t exp, bool mirror,
 }
 
 //____________________________________________________________________
+/** 
+ * Get PYTHIA 900GeV INEL data 
+ * 
+ * 
+ * @return Data graph
+ */
 TGraphAsymmErrors*
 Pythia900INEL()
 {
@@ -334,6 +342,12 @@ Pythia900INEL()
 }
 
 //____________________________________________________________________
+/** 
+ * Get PYTHIA 900GeV NSD data 
+ * 
+ * 
+ * @return Data graph
+ */
 TGraphAsymmErrors*
 Pythia900NSD()
 {
@@ -1166,6 +1180,18 @@ TGraphAsymmErrors* CMSNsd7000()
 }
 
 //____________________________________________________________________
+/** 
+ * Get a single data graph 
+ * 
+ * @param which    Which type
+ * @param sys      Collisition system
+ * @param energy   Collision energy
+ * @param type     Trigger type 
+ * @param centLow  Low cut on centrality 
+ * @param centHigh Up cut on centraltiy
+ * 
+ * @return Data graph 
+ */
 TGraphAsymmErrors*
 GetSingle(UShort_t which, 
          UShort_t sys, 
@@ -1253,6 +1279,15 @@ GetSingle(UShort_t which,
 }
 
 //____________________________________________________________________
+/** 
+ * Append an item to a list 
+ * 
+ * @param s      List to append to 
+ * @param delim  Delimiter 
+ * @param what   What to append 
+ * 
+ * @return New string value 
+ */
 TString&
 AppendItem(TString& s, char delim, const char* what)     
 {