]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Fixes for the IO problem in the FMD analysis (cholm)
authorhdalsgaa <hdalsgaa@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 26 Oct 2009 14:21:11 +0000 (14:21 +0000)
committerhdalsgaa <hdalsgaa@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 26 Oct 2009 14:21:11 +0000 (14:21 +0000)
PWG2/FORWARD/analysis/AliFMDAnaParameters.cxx
PWG2/FORWARD/analysis/AliFMDAnaParameters.h
PWG2/FORWARD/analysis/AliFMDAnalysisTaskSE.cxx
PWG2/FORWARD/analysis/AliFMDAnalysisTaskSE.h
PWG2/FORWARD/analysis/TestTaskIO.C [new file with mode: 0644]

index b6f2f69f46559059376972a98f25d3b4191cdf8d..9464de12576e7281c2c1f3d3b4110db4176db3b5 100644 (file)
@@ -80,8 +80,8 @@ AliFMDAnaParameters::AliFMDAnaParameters() :
   fMagField(k5G),
   fSpecies(kPP)
 {
-  
-  
+  // Do not use this - it is only for IO 
+  fgInstance = this;
   //fVerticies.Add(new TVector2(4.2231, 26.6638));
   // fVerticies.Add(new TVector2(1.8357, 27.9500));
   // Default constructor 
@@ -192,7 +192,8 @@ void AliFMDAnaParameters::InitEventSelectionEff() {
 }
 //____________________________________________________________________
 
-void AliFMDAnaParameters::PrintStatus() {
+void AliFMDAnaParameters::PrintStatus() const
+{
   
   TString energystring;
   switch(fEnergy) {
index 7cbac2477d2d57ff762ca68dc0486befe21d68af..b27d75a4c19cf7df24c19ee258d8ecff8ce75b65 100644 (file)
@@ -66,6 +66,9 @@ public:
   enum MagField {k0G, k5G};
   
   enum Species {kPP, kPbPb};
+
+  /** DO NOT USE THIS - ONLY FOR IO */
+  AliFMDAnaParameters();
   
   /** Singleton access
       @return  single to */
@@ -115,12 +118,10 @@ public:
   void     SetMagField(MagField magfield) {fMagField = magfield;}
   char*    GetPath(const char* species);
   void     SetCollisionSystem(Species collsystem) {fSpecies = collsystem;}
-  void     PrintStatus();
-  
+  void     PrintStatus() const;
+  void     Print(Option_t* /* option */) const { PrintStatus(); }
 protected:
   
-  AliFMDAnaParameters();
-  
   AliFMDAnaParameters(const AliFMDAnaParameters& o) 
     : TNamed(o),
       fIsInit(o.fIsInit),
index 2fc8e55d0d8ad54f2dfa2edb57ae512a59538490..b2380281eb95d6caaa7a279765256cf567ad9b2b 100644 (file)
@@ -5,6 +5,7 @@
 #include "AliMCEventHandler.h"
 #include "AliAnalysisManager.h"
 #include "AliFMDAnaParameters.h"
+#include "AliLog.h"
 
 ClassImp(AliFMDAnalysisTaskSE)
 
@@ -15,7 +16,8 @@ AliAnalysisTaskSE(),
   fSharing("Sharing",kFALSE),
   fDensity("Density",kFALSE),
   fBackground("BackgroundCorrected",kFALSE),
-  fDndeta("dNdeta",kFALSE)
+  fDndeta("dNdeta",kFALSE), 
+  fParams(0)
 {
   // Default constructor
 }
@@ -26,9 +28,10 @@ AliFMDAnalysisTaskSE::AliFMDAnalysisTaskSE(const char* name):
   fSharing("Sharing",kFALSE),
   fDensity("Density",kFALSE),
   fBackground("BackgroundCorrected",kFALSE),
-  fDndeta("dNdeta",kFALSE)
+  fDndeta("dNdeta",kFALSE), 
+  fParams(0)
 {
-  
+  SetParams(AliFMDAnaParameters::Instance());
   DefineOutput(1, TList::Class());
 }
 //_____________________________________________________________________
@@ -105,6 +108,24 @@ void AliFMDAnalysisTaskSE::Terminate(Option_t */*option*/)
   fDndeta.Terminate("");
 
 }
+
+//_____________________________________________________________________
+void AliFMDAnalysisTaskSE::Print(Option_t* option) const
+{
+  AliInfo(Form("FMD Single Event Analysis Task\n"
+              "Parameters set to %p", fParams));
+  TString opt(option);
+  opt.ToLower();
+  if (opt.Contains("s")) { 
+    fSharing.Print(option);     
+    fDensity.Print(option);     
+    fBackground.Print(option);  
+    fDndeta.Print(option);      
+  }
+  if (opt.Contains("p") && fParams) 
+    fParams->Print(option);      
+}
+
 //_____________________________________________________________________
 //
 // EOF
index 0d8c3551638f1667133777842646955c66c083a6..167a7e6e8eb8e4e92e9061dec3a3b7e7a28366e3 100644 (file)
@@ -6,6 +6,7 @@
 #include "AliFMDAnalysisTaskDensity.h"
 #include "AliFMDAnalysisTaskBackgroundCorrection.h"
 #include "AliFMDAnalysisTaskDndeta.h"
+class AliFMDAnaParameters;
 
 /** @defgroup FMD_ana Analysis tasks 
     @brief Various classes to do analysis tasks 
 
 class AliFMDAnalysisTaskSE : public AliAnalysisTaskSE
 {
- public:
-    AliFMDAnalysisTaskSE();
-    AliFMDAnalysisTaskSE(const char* name);
-    virtual ~AliFMDAnalysisTaskSE() {;}
- AliFMDAnalysisTaskSE(const AliFMDAnalysisTaskSE& o) : AliAnalysisTaskSE(),
-                                                      fListOfHistos(o.fListOfHistos),
-                                                      fSharing(o.fSharing),
-                                                      fDensity(o.fDensity),
-                                                      fBackground(o.fBackground),
-                                                      fDndeta(o.fDndeta)   {}
-    AliFMDAnalysisTaskSE& operator=(const AliFMDAnalysisTaskSE&) { return *this; }
+public:                                // 
+  AliFMDAnalysisTaskSE();
+  AliFMDAnalysisTaskSE(const char* name);
+  virtual ~AliFMDAnalysisTaskSE() {;}
+  AliFMDAnalysisTaskSE(const AliFMDAnalysisTaskSE& o) 
+    : AliAnalysisTaskSE(),
+      fListOfHistos(o.fListOfHistos),
+      fSharing(o.fSharing),
+      fDensity(o.fDensity),
+      fBackground(o.fBackground),
+      fDndeta(o.fDndeta),   
+      fParams(o.fParams)
+  {}
+  AliFMDAnalysisTaskSE& operator=(const AliFMDAnalysisTaskSE&) { return *this; }
   
   virtual void Init();
   virtual void UserCreateOutputObjects();
   virtual void UserExec(Option_t* /*option*/);
-  void  Terminate(Option_t */*option*/);
-  
+  void         Terminate(Option_t */*option*/);
+  void         SetParams(AliFMDAnaParameters* p) { fParams = p; }
+  void         Print(Option_t* option="") const;
 private:
   
   TList* fListOfHistos;
@@ -51,6 +56,8 @@ private:
   AliFMDAnalysisTaskDensity              fDensity;
   AliFMDAnalysisTaskBackgroundCorrection fBackground;
   AliFMDAnalysisTaskDndeta               fDndeta;
+  AliFMDAnaParameters*                   fParams;
+
   
   ClassDef(AliFMDAnalysisTaskSE, 1);
 
diff --git a/PWG2/FORWARD/analysis/TestTaskIO.C b/PWG2/FORWARD/analysis/TestTaskIO.C
new file mode 100644 (file)
index 0000000..6a1cb6d
--- /dev/null
@@ -0,0 +1,40 @@
+void 
+TestTaskIO(bool read=false) 
+{
+  gSystem->Load("libANALYSIS.so");
+  gSystem->Load("libANALYSISalice.so");
+  gSystem->Load("libPWG2forward.so");
+
+  TFile* file = TFile::Open("task.root", (read ? "READ" : "RECREATE"));
+
+  if (!read) TestTaskIOWrite(file);
+  else       TestTaskIORead(file);
+
+  file->Close();
+}
+
+void
+TestTaskIOWrite(TFile* f)
+{
+  AliFMDAnaParameters* p = AliFMDAnaParameters::Instance();
+  p->SetEnergy(AliFMDAnaParameters::k900);
+  p->Init();
+  p->Dump();
+
+  f->cd();
+
+  AliFMDAnalysisTaskSE* t = new AliFMDAnalysisTaskSE("FMD");
+  t->Write();
+  t->Print("p");
+}
+
+
+void
+TestTaskIORead(TFile* f)
+{
+  AliFMDAnalysisTaskSE* t = static_cast<AliFMDAnalysisTaskSE*>(f->Get("FMD"));
+  t->Print("p");
+
+  AliFMDAnaParameters* p = AliFMDAnaParameters::Instance();
+  p->Dump();
+}