Adding the config and the AddTask macros + corresponding modifications in the BF...
authorpchrist <pchrist@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 18 Jul 2009 08:35:53 +0000 (08:35 +0000)
committerpchrist <pchrist@f7af4fe6-9843-0410-8265-dc069ae4e863>
Sat, 18 Jul 2009 08:35:53 +0000 (08:35 +0000)
PWG2/EBYE/AliAnalysisTaskBF.cxx
PWG2/EBYE/AliAnalysisTaskBF.h
PWG2/EBYE/AliBalance.cxx
PWG2/EBYE/AliBalance.h
PWG2/EBYE/macros/AddTaskBalanceFunction.C [new file with mode: 0644]
PWG2/EBYE/macros/configBalanceFunctionAnalysis.C [new file with mode: 0644]
PWG2/EBYE/macros/runBalanceFunction.C

index 4679eaf..351711c 100755 (executable)
@@ -55,11 +55,11 @@ void AliAnalysisTaskBF::ConnectInputData(Option_t *) {
 void AliAnalysisTaskBF::CreateOutputObjects() {
   // Create histograms
   // Called once
-
-  fBalance = new AliBalance();
-  fBalance->SetAnalysisType(1);
-  fBalance->SetNumberOfBins(18);
-  fBalance->SetInterval(-0.9,0.9);
+  
+  //fBalance = new AliBalance();
+  //fBalance->SetAnalysisType(1);
+  //fBalance->SetNumberOfBins(18);
+  //fBalance->SetInterval(-0.9,0.9);
   //cout<<fBalance->GetAnalysisType()<<endl;
 }
 
index 8d07d07..8d534cf 100755 (executable)
@@ -18,6 +18,9 @@ class AliAnalysisTaskBF : public AliAnalysisTask {
   virtual void   CreateOutputObjects();\r
   virtual void   Exec(Option_t *option);\r
   virtual void   Terminate(Option_t *);\r
+\r
+  void SetAnalysisObject(AliBalance *const analysis) {\r
+    fBalance = analysis;}\r
   \r
  private:\r
   AliESDEvent *fESD;    //ESD object\r
index ad8fbd6..34af434 100644 (file)
@@ -27,6 +27,7 @@
 #include <TLorentzVector.h>
 #include <TObjArray.h>
 #include <TGraphErrors.h>
+#include <TString.h>
 
 #include "AliESDtrack.h"
 #include "AliBalance.h"
@@ -36,7 +37,7 @@ ClassImp(AliBalance)
 //____________________________________________________________________//
 AliBalance::AliBalance() :
   TObject(), 
-  fNumberOfBins(0),
+  fAnalysisLevel("ESD"), fNumberOfBins(0),
   fAnalysisType(0), fAnalyzedEvents(0), fP2Start(0),
   fP2Stop(0), fP2Step(0), fNn(0), fNp(0) {
   // Default constructor
@@ -51,7 +52,7 @@ AliBalance::AliBalance() :
 
 //____________________________________________________________________//
 AliBalance::AliBalance(Double_t p2Start, Double_t p2Stop, Int_t p2Bins) :
-  TObject(), 
+  TObject(), fAnalysisLevel("ESD"),
   fNumberOfBins(p2Bins), fAnalysisType(0), 
   fAnalyzedEvents(0), fP2Start(p2Start), fP2Stop(p2Stop), 
   fP2Step(TMath::Abs(fP2Start - fP2Stop) / (Double_t)fNumberOfBins), 
@@ -68,7 +69,7 @@ AliBalance::AliBalance(Double_t p2Start, Double_t p2Stop, Int_t p2Bins) :
 
 //____________________________________________________________________//
 AliBalance::AliBalance(const AliBalance& balance):
-  TObject(balance),
+  TObject(balance), fAnalysisLevel(balance.fAnalysisLevel),
   fNumberOfBins(balance.fNumberOfBins),
   fAnalysisType(balance.fAnalysisType),
   fAnalyzedEvents(balance.fAnalyzedEvents),
@@ -215,9 +216,14 @@ void AliBalance::CalculateBalance(TObjArray *gTrackArray) {
   Int_t i = 0 , j = 0;
   Int_t ibin = 0;
   
+  AliESDtrack* track = 0;
+  AliESDtrack* track1 = 0;
+  AliESDtrack* track2 = 0;
+    
   Int_t gNtrack = gTrackArray->GetEntries();
   for(i = 0; i < gNtrack; i++) {
-    AliESDtrack *track = dynamic_cast<AliESDtrack *>(gTrackArray->At(i));
+    if(fAnalysisLevel == "ESD")
+      track = dynamic_cast<AliESDtrack *>(gTrackArray->At(i));
     Short_t charge = track->Charge();
     if(charge > 0) fNp += 1.;
     if(charge < 0) fNn += 1.;
@@ -227,13 +233,15 @@ void AliBalance::CalculateBalance(TObjArray *gTrackArray) {
   //0:y - 1:eta - 2:Qlong - 3:Qout - 4:Qside - 5:Qinv - 6:phi
   if(fAnalysisType==0) {
     for(i = 1; i < gNtrack; i++) {
-      AliESDtrack *track1 = dynamic_cast<AliESDtrack *>(gTrackArray->At(i));
+      if(fAnalysisLevel == "ESD")
+       track1 = dynamic_cast<AliESDtrack *>(gTrackArray->At(i));
       Short_t charge1 = track1->Charge();
       Double_t pZ1 = track1->Pz();
       Double_t energy1 = TMath::Sqrt(TMath::Power(track1->P(),2) +
                                     TMath::Power(track1->M(),2));
       for(j = 0; j < i; j++) {
-       AliESDtrack *track2 = dynamic_cast<AliESDtrack *>(gTrackArray->At(j));
+       if(fAnalysisLevel == "ESD")
+         track2 = dynamic_cast<AliESDtrack *>(gTrackArray->At(j));
        Short_t charge2 = track2->Charge();
        Double_t pZ2 = track2->Pz();
        Double_t energy2 = TMath::Sqrt(TMath::Power(track2->P(),2) +
@@ -252,12 +260,14 @@ void AliBalance::CalculateBalance(TObjArray *gTrackArray) {
   }//case 0
   if(fAnalysisType==1) {
     for(i = 1; i < gNtrack; i++) {
-      AliESDtrack *track1 = dynamic_cast<AliESDtrack *>(gTrackArray->At(i));
+      if(fAnalysisLevel == "ESD")
+       track1 = dynamic_cast<AliESDtrack *>(gTrackArray->At(i));
       Short_t charge1 = track1->Charge();
       Double_t pZ1 = track1->Pz();
       Double_t p1 = track1->P();
       for(j = 0; j < i; j++) {
-       AliESDtrack *track2 = dynamic_cast<AliESDtrack *>(gTrackArray->At(j));
+       if(fAnalysisLevel == "ESD")
+         track2 = dynamic_cast<AliESDtrack *>(gTrackArray->At(j));
        Short_t charge2 = track2->Charge();
        Double_t pZ2 = track2->Pz();
        Double_t p2 = track2->P();
@@ -276,7 +286,8 @@ void AliBalance::CalculateBalance(TObjArray *gTrackArray) {
   }//case 1
   if(fAnalysisType==2) {
     for(i = 1; i < gNtrack; i++) {
-      AliESDtrack *track1 = dynamic_cast<AliESDtrack *>(gTrackArray->At(i));
+      if(fAnalysisLevel == "ESD")
+       track1 = dynamic_cast<AliESDtrack *>(gTrackArray->At(i));
       Short_t charge1 = track1->Charge();
       Double_t pX1 = track1->Px();
       Double_t pY1 = track1->Py();
@@ -284,7 +295,8 @@ void AliBalance::CalculateBalance(TObjArray *gTrackArray) {
       Double_t energy1 = TMath::Sqrt(TMath::Power(track1->P(),2) +
                                     TMath::Power(track1->M(),2));
       for(j = 0; j < i; j++) {
-       AliESDtrack *track2 = dynamic_cast<AliESDtrack *>(gTrackArray->At(j));
+       if(fAnalysisLevel == "ESD")
+         track2 = dynamic_cast<AliESDtrack *>(gTrackArray->At(j));
        Short_t charge2 = track2->Charge();
        Double_t pX2 = track2->Px();
        Double_t pY2 = track2->Py();
@@ -311,7 +323,8 @@ void AliBalance::CalculateBalance(TObjArray *gTrackArray) {
   }//case 2
   if(fAnalysisType==3) {
     for(i = 1; i < gNtrack; i++) {
-      AliESDtrack *track1 = dynamic_cast<AliESDtrack *>(gTrackArray->At(i));
+      if(fAnalysisLevel == "ESD")
+       track1 = dynamic_cast<AliESDtrack *>(gTrackArray->At(i));
       Short_t charge1 = track1->Charge();
       Double_t pX1 = track1->Px();
       Double_t pY1 = track1->Py();
@@ -319,7 +332,8 @@ void AliBalance::CalculateBalance(TObjArray *gTrackArray) {
       Double_t energy1 = TMath::Sqrt(TMath::Power(track1->P(),2) +
                                     TMath::Power(track1->M(),2));
       for(j = 0; j < i; j++) {
-       AliESDtrack *track2 = dynamic_cast<AliESDtrack *>(gTrackArray->At(j));
+       if(fAnalysisLevel == "ESD")
+         track2 = dynamic_cast<AliESDtrack *>(gTrackArray->At(j));
        Short_t charge2 = track2->Charge();
        Double_t pX2 = track2->Px();
        Double_t pY2 = track2->Py();
@@ -346,14 +360,16 @@ void AliBalance::CalculateBalance(TObjArray *gTrackArray) {
   }//case 3
   if(fAnalysisType==4) {
     for(i = 1; i < gNtrack; i++) {
-      AliESDtrack *track1 = dynamic_cast<AliESDtrack *>(gTrackArray->At(i));
+      if(fAnalysisLevel == "ESD")
+       track1 = dynamic_cast<AliESDtrack *>(gTrackArray->At(i));
       Short_t charge1 = track1->Charge();
       Double_t pX1 = track1->Px();
       Double_t pY1 = track1->Py();
       //Double_t energy1 = TMath::Sqrt(TMath::Power(track1->P(),2) +
       //TMath::Power(track1->M(),2));
       for(j = 0; j < i; j++) {
-       AliESDtrack *track2 = dynamic_cast<AliESDtrack *>(gTrackArray->At(j));
+       if(fAnalysisLevel == "ESD")
+         track2 = dynamic_cast<AliESDtrack *>(gTrackArray->At(j));
        Short_t charge2 = track2->Charge();
        Double_t pX2 = track2->Px();
        Double_t pY2 = track2->Py();
@@ -377,7 +393,8 @@ void AliBalance::CalculateBalance(TObjArray *gTrackArray) {
   }//case 4
   if(fAnalysisType==5) {
     for(i = 1; i < gNtrack; i++) {
-      AliESDtrack *track1 = dynamic_cast<AliESDtrack *>(gTrackArray->At(i));
+      if(fAnalysisLevel == "ESD")
+       track1 = dynamic_cast<AliESDtrack *>(gTrackArray->At(i));
       Short_t charge1 = track1->Charge();
       Double_t pX1 = track1->Px();
       Double_t pY1 = track1->Py();
@@ -385,7 +402,8 @@ void AliBalance::CalculateBalance(TObjArray *gTrackArray) {
       Double_t energy1 = TMath::Sqrt(TMath::Power(track1->P(),2) +
                                     TMath::Power(track1->M(),2));
       for(j = 0; j < i; j++) {
-       AliESDtrack *track2 = dynamic_cast<AliESDtrack *>(gTrackArray->At(j));
+       if(fAnalysisLevel == "ESD")
+         track2 = dynamic_cast<AliESDtrack *>(gTrackArray->At(j));
        Short_t charge2 = track2->Charge();
        Double_t pX2 = track2->Px();
        Double_t pY2 = track2->Py();
@@ -408,11 +426,13 @@ void AliBalance::CalculateBalance(TObjArray *gTrackArray) {
   }//case 5    
   if(fAnalysisType==6) {
     for(i = 1; i < gNtrack; i++) {
-      AliESDtrack *track1 = dynamic_cast<AliESDtrack *>(gTrackArray->At(i));
+      if(fAnalysisLevel == "ESD")
+       track1 = dynamic_cast<AliESDtrack *>(gTrackArray->At(i));
       Short_t charge1 = track1->Charge();
       Double_t phi1 = track1->Phi();
       for(j = 0; j < i; j++) {
-       AliESDtrack *track2 = dynamic_cast<AliESDtrack *>(gTrackArray->At(j));
+       if(fAnalysisLevel == "ESD")
+         track2 = dynamic_cast<AliESDtrack *>(gTrackArray->At(j));
        Short_t charge2 = track2->Charge();
        Double_t phi2 = track2->Phi();
        Double_t dphi = TMath::Abs(phi1 - phi2);
index 10d2bef..d00fb0f 100644 (file)
 //-------------------------------------------------------------------------
 
 #include <TObject.h>
+#include "TString.h"
 
 #define MAXIMUM_NUMBER_OF_STEPS        1024
 
 class TGraphErrors;
 class TObjArray;
+//class TString;
 
 class AliBalance : public TObject {
  public:
@@ -27,11 +29,13 @@ class AliBalance : public TObject {
   ~AliBalance();
   
   void SetNumberOfBins(Int_t ibins);
+  void SetAnalysisLevel(const char* analysisLevel) {fAnalysisLevel = analysisLevel;}
   void SetAnalysisType(Int_t iType);
   void SetInterval(Double_t p2Start, Double_t p2Stop);
 
   Int_t GetNumberOfBins() {return fNumberOfBins;}
   const char* GetAnalysisType();
+  const char* GetAnalysisLevel() {return fAnalysisLevel.Data();}
 
   void SetNp(Int_t np) {fNp = np;}
   void SetNn(Int_t nn) {fNn = nn;}
@@ -56,6 +60,7 @@ class AliBalance : public TObject {
   void Merge(AliBalance *b);
 
  private:
+  TString fAnalysisLevel; //ESD, AOD or MC
   Int_t fNumberOfBins; //number of bins of the analyzed interval
   Int_t fAnalysisType; //0:y - 1:eta - 2:Qlong - 3:Qout - 4:Qside - 5:Qinv - 6:phi
   Int_t fAnalyzedEvents; //number of events that have been analyzed
diff --git a/PWG2/EBYE/macros/AddTaskBalanceFunction.C b/PWG2/EBYE/macros/AddTaskBalanceFunction.C
new file mode 100644 (file)
index 0000000..8847894
--- /dev/null
@@ -0,0 +1,39 @@
+AliAnalysisTaskProtons *AddTaskBalanceFunction() {
+  // Creates a proton analysis task and adds it to the analysis manager.
+  // Get the pointer to the existing analysis manager via the static access method.
+  //==============================================================================
+  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
+  if (!mgr) {
+    ::Error("AddTaskProtons", "No analysis manager to connect to.");
+    return NULL;
+  }
+
+  // Check the analysis type using the event handlers connected to the analysis manager.
+  //==============================================================================
+  if (!mgr->GetInputEventHandler()) {
+    ::Error("AddTaskBalanceFunction", "This task requires an input event handler");
+    return NULL;
+  }
+  TString type = mgr->GetInputEventHandler()->GetDataType(); // can be "ESD" or "AOD"
+  gROOT->LoadMacro("$ALICE_ROOT/PWG2/EBYE/macros/configBalanceFunctionAnalysis.C");
+  AliBalance *bf = 0;
+  if (type=="ESD") bf = GetBalanceFunctionObject("ESD");
+  else if (type=="AOD") bf = GetBalanceFunctionObject("AOD");
+  else bf = GetBalanceFunctionObject("MC");
+
+  // Create the task, add it to manager and configure it.
+  //===========================================================================
+  AliAnalysisTaskBF *taskBF = new AliAnalysisTaskBF("TaskBF");
+  mgr->AddTask(taskBF);
+  taskBF->SetAnalysisObject(bf);
+
+  // Create ONLY the output containers for the data produced by the task.
+  // Get and connect other common input/output containers via the manager as below
+  //==============================================================================
+  AliAnalysisDataContainer *cout_bf = mgr->CreateContainer("bfOutput", AliBalance::Class(),AliAnalysisManager::kOutputContainer,"outputBalanceFunctionAnalysis.root");
+  mgr->ConnectInput(taskBF, 0, mgr->GetCommonInputContainer());
+  mgr->ConnectOutput(taskBF, 0, cout_bf);
+
+  // Return task pointer at the end
+  return taskBF;
+}
diff --git a/PWG2/EBYE/macros/configBalanceFunctionAnalysis.C b/PWG2/EBYE/macros/configBalanceFunctionAnalysis.C
new file mode 100644 (file)
index 0000000..f1c0108
--- /dev/null
@@ -0,0 +1,11 @@
+//__________________________________________________//
+AliBalance *GetBalanceFunctionObject(const char* analysisLevel = "ESD") {
+  //Function to setup the AliProtonAnalysis object and return it
+  AliBalance *gBalance = new AliBalance();
+  gBalance->SetAnalysisLevel(analysisLevel);
+  gBalance->SetAnalysisType(1);
+  gBalance->SetNumberOfBins(18);
+  gBalance->SetInterval(-0.9,0.9);
+
+  return gBalance;
+}
index bc67ae4..747e20b 100755 (executable)
@@ -1,14 +1,14 @@
-void runBalanceFunction() {
+void runBalanceFunction(const char* mode = "ESD") {
   TStopwatch timer;
   timer.Start();
 
-  runLocal();
+  runLocal(mode);
 
   timer.Stop();
   timer.Print();
 }
 
-void runLocal() {
+void runLocal(const char* mode) {
   //____________________________________________________//
   //_____________Setting up the par files_______________//
   //____________________________________________________//
@@ -30,6 +30,8 @@ void runLocal() {
   TChain *chain = new TChain("esdTree");
   chain->Add("AliESDs.root");
 
+  gROOT->LoadMacro("configBalanceFunctionAnalysis.C");
+  AliBalance *analysis = GetBalanceFunctionObject(mode);
 
   //___________________________________________________//
   // Create the analysis manager
@@ -40,18 +42,18 @@ void runLocal() {
 
   // Create task
   gROOT->LoadMacro("AliAnalysisTaskBF.cxx+g");
-  AliAnalysisTaskBF *task = new AliAnalysisTaskBF("TaskBF");
-
+  AliAnalysisTaskBF *taskBF = new AliAnalysisTaskBF("TaskBF");
+  taskBF->SetAnalysisObject(analysis);
   // Add task
-  mgr->AddTask(task);
+  mgr->AddTask(taskBF);
 
   // Create containers for input/output
   AliAnalysisDataContainer *cinput = mgr->GetCommonInputContainer();
   AliAnalysisDataContainer *coutput = mgr->CreateContainer("contBF", AliBalance::Class(), AliAnalysisManager::kOutputContainer, "BF.ESD.root");
 
   // Connect input/output
-  mgr->ConnectInput(task, 0, cinput);
-  mgr->ConnectOutput(task, 0, coutput);
+  mgr->ConnectInput(taskBF, 0, cinput);
+  mgr->ConnectOutput(taskBF, 0, coutput);
 
   // Enable debug printouts
   mgr->SetDebugLevel(2);