many directories support added
authorskowron <skowron@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 29 Nov 2001 19:05:15 +0000 (19:05 +0000)
committerskowron <skowron@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 29 Nov 2001 19:05:15 +0000 (19:05 +0000)
HBTAN/AliHBTReader.cxx
HBTAN/AliHBTReader.h

index 95a12f4..aabe6e5 100644 (file)
@@ -1,5 +1,11 @@
 #include "AliHBTReader.h"
 
+#include <TString.h>
+#include <TObjString.h>
+#include <TObjArray.h>
+#include <TClass.h>
+#include <iostream.h>
+
 #include "AliHBTParticleCut.h"
 
 
@@ -12,9 +18,15 @@ AliHBTReader::AliHBTReader()
 {
 //constructor
  fCuts = new TObjArray();
+ fDirs = 0x0;
 }
 
 /*************************************************************************************/
+AliHBTReader::AliHBTReader(TObjArray* dirs)
+ {
+  fCuts = new TObjArray();
+  fDirs = dirs;
+ }
 
 AliHBTReader::~AliHBTReader()
 {
@@ -83,3 +95,41 @@ Bool_t  AliHBTReader::Pass(Int_t pid)
  return kTRUE;
 }
 /*************************************************************************************/
+
+TString& AliHBTReader::GetDirName(Int_t entry)
+ {
+   TString* retval;//return value
+   if (fDirs ==  0x0)
+    {
+      retval = new TString(".");
+      return *retval;
+    }
+   
+   if ( (entry>fDirs->GetEntries()) || (entry<0))//if out of bounds return empty string
+    {                                            //note that entry==0 is accepted even if array is empty (size=0)
+      Error("GetDirName","Name out of bounds");
+      retval = new TString();
+      return *retval;
+    }
+   
+   if (fDirs->GetEntries() == 0)
+    { 
+      retval = new TString(".");
+      return *retval;
+    }
+   
+   TClass *objclass = fDirs->At(entry)->IsA();
+   TClass *stringclass = TObjString::Class();
+   
+   TObjString *dir = (TObjString*)objclass->DynamicCast(stringclass,fDirs->At(entry));
+   
+   if(dir == 0x0)
+    {
+      Error("GetDirName","Object in TObjArray is not a TObjString or its descendant");
+      retval = new TString();
+      return *retval;
+    }
+   if (gDebug > 0) cout<<"Returned ok "<<dir->String().Data()<<endl;
+   return dir->String();
+ }
+
index 3622244..18c048c 100644 (file)
@@ -4,7 +4,7 @@
 #include <TObject.h>
 
 //Reader Base class (reads particles and tracks and
-//puts it to the AliHBTRun object
+//puts it to the AliHBTRun objects
 //Piotr.Skowronski@cern.ch
 
 class AliHBTRun;
@@ -12,12 +12,14 @@ class AliHBTEvent;
 class AliHBTParticleCut;
 class TObjArray;
 class AliHBTParticle;
+class TString;
 
 class AliHBTReader: public TObject
 
 {
   public:
     AliHBTReader();
+    AliHBTReader(TObjArray*);
     virtual ~AliHBTReader();
     //in the future this class is will read global tracking
     virtual Int_t Read(AliHBTRun* particles, AliHBTRun *tracks) = 0;
@@ -29,13 +31,16 @@ class AliHBTReader: public TObject
     
     
     void AddParticleCut(AliHBTParticleCut* cut);
-    
+
   protected:
     
-    TObjArray *fCuts;//
+    TObjArray *fCuts;//array with particle cuts
+    TObjArray *fDirs;//arry with directories to read data from
 
     Bool_t Pass(AliHBTParticle*);
     Bool_t Pass(Int_t pid);
+
+    TString& GetDirName(Int_t);
     
   private: