]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TRD/AliTRDdigitsManager.h
Adding using std::...
[u/mrichter/AliRoot.git] / TRD / AliTRDdigitsManager.h
index 94e7d38839809058848d9188c62f5c73ceee0ba4..89ffbe45bba20978a95fc2e4fee38d6b0b69ad46 100644 (file)
 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
  * See cxx source for full Copyright notice                               */
 
-/* $Id: AliTRDdigitsManager.h,v */
+/* $Id$ */
 
 /////////////////////////////////////////////////////////////
 //  Manages the TRD digits                                 //
 /////////////////////////////////////////////////////////////
 
-#include "TObject.h"
+#include <TObject.h>
 
-#include "AliTRDsegmentArray.h"
-#include "AliTRDdataArrayI.h"
-#include "AliTRDdigit.h"
-
-const Int_t  kNDict = 3;
+class TFile;
+class TTree;
+class TBranch;  
+class AliTRDdigit;
+class AliTRDSignalIndex;
+class AliTRDarrayADC;  
+class AliTRDarraySignal; 
+class AliTRDarrayDictionary;
+class AliTRDdigitsParam;
 
 class AliTRDdigitsManager : public TObject {
 
  public:
 
-  AliTRDdigitsManager();
-  AliTRDdigitsManager(AliTRDdigitsManager &m);
-  virtual ~AliTRDdigitsManager();
-
-  virtual void                Copy(AliTRDdigitsManager &m);
-  virtual Bool_t              MakeBranch();
-  virtual Bool_t              ReadDigits();
-  virtual Bool_t              WriteDigits();
+  enum { kNDict = 3 };
 
-  virtual void                SetRaw();
+  AliTRDdigitsManager(Bool_t rawRec = kFALSE);  //if true digitsmanager uses only one entry in the TObjectArrays
+  AliTRDdigitsManager(const AliTRDdigitsManager &m);
+  virtual ~AliTRDdigitsManager();
+  AliTRDdigitsManager &operator=(const AliTRDdigitsManager &m);
 
-  virtual Bool_t              IsRaw()                { return fIsRaw;         };
-  virtual AliTRDsegmentArray *GetDigits()            { return fDigits;        };
-  virtual AliTRDsegmentArray *GetDictionary(Int_t i) { return fDictionary[i]; };
+  virtual void                Copy(TObject &m) const;
 
-          AliTRDdigit        *GetDigit(Int_t row, Int_t col, Int_t time, Int_t det);
-          Int_t               GetTrack(Int_t track, Int_t row, Int_t col, Int_t time, Int_t det);
+  virtual void                CreateArrays();
+  void                        ClearArrays(Int_t det);
+  virtual Bool_t              BuildIndexes(Int_t det);
 
-  inline  AliTRDdataArrayI   *GetDigits(Int_t det);
-  inline  AliTRDdataArrayI   *GetDictionary(Int_t det, Int_t i);
-  inline  Int_t               GetTrack(Int_t track, AliTRDdigit *Digit);
+  virtual Bool_t              MakeBranch(TTree * const tree);
+  virtual Bool_t              ReadDigits(TTree * consttree);
+  virtual Bool_t              WriteDigits();
 
-  inline  AliTRDdigitsManager &operator=(AliTRDdigitsManager &m);
+  virtual void                SetEvent(Int_t evt)             { fEvent           = evt;  };
+  virtual void                SetSDigits(Int_t v = 1)         { fHasSDigits      = v;    };
+  virtual void                SetUseDictionaries(Bool_t kval) { fUseDictionaries = kval; };
+
+  virtual Bool_t              UsesDictionaries() const        { return fUseDictionaries; };
+  virtual Bool_t              HasSDigits() const              { return fHasSDigits;      };
+  static  Int_t               NDict()                         { return fgkNDict;         }; 
+
+  virtual TObjArray          *GetDigits() const               { return fDigits;          };  
+  virtual TObjArray          *GetDictionary(Int_t i) const    { return fDict[i];         }; 
+
+  AliTRDdigit                *GetDigit(Int_t row, Int_t col, Int_t time, Int_t det) const;
+  Int_t                       GetTrack(Int_t track, Int_t row, Int_t col, Int_t time, Int_t det) const;
+  
+  AliTRDarrayADC             *GetDigits(Int_t det)  const;
+  AliTRDarraySignal          *GetSDigits(Int_t det) const;    
+  AliTRDarrayDictionary      *GetDictionary(Int_t det, Int_t i) const;  
+  AliTRDdigitsParam          *GetDigitsParam() const          { return fDigitsParam;     };
+  AliTRDSignalIndex          *GetIndexes(Int_t det);
+  TObjArray                  *GetIndexes() const              { return fSignalIndexes;   };
+
+  void                        RemoveDigits(Int_t det);
+  void                        RemoveDictionaries(Int_t det);
+  void                        RemoveIndexes(Int_t det);
+  void                        ClearIndexes(Int_t det);
+  
+  Int_t                       GetTrack(Int_t track, const AliTRDdigit * const digit) const;
+  Short_t                     GetDigitAmp(Int_t row, Int_t col, Int_t time, Int_t det) const;
+  UChar_t                     GetPadStatus(Int_t row, Int_t col, Int_t time, Int_t det) const;
+
+  Bool_t                      LoadArrayDigits();
+  Bool_t                      LoadArrayDict();
+  Bool_t                      LoadDigitsParam();
+  Bool_t                      StoreArrayDigits();
+  Bool_t                      StoreArrayDict();
+  Bool_t                      StoreDigitsParam();
 
  protected:
-
-  AliTRDsegmentArray *fDigits;             //! Digits data Array
-  AliTRDsegmentArray *fDictionary[kNDict]; //! Track dictionary data array
-
-  Bool_t              fIsRaw;              //  Flag indicating raw digits
-
-  ClassDef(AliTRDdigitsManager,1)          //  Manages the TRD digits
+  
+  static const Int_t  fgkNDict;            //  Number of track dictionary arrays
+  Int_t               fEvent;              //  Event number
+  TTree              *fTree;               //! Tree for the digits arrays
+  TObjArray          *fDigits;             //  Digits data array               
+  TObjArray          *fDict[kNDict];       //  Track dictionary data array   
+  Bool_t              fHasSDigits;         //  Switch for the summable digits
+  TObjArray          *fSignalIndexes;      //  Provides access to the active pads and tbins
+  Bool_t              fUseDictionaries;    //  Use dictionaries or not (case of real data)
+  Int_t               fDets;               //  No of Detectors
+  Bool_t              fRawRec;             //  Reconstruct from raw files? If its kTRUE then the TObjArrays have only one entry.
+  AliTRDdigitsParam  *fDigitsParam;        //  Parameters of the digits
+
+  ClassDef(AliTRDdigitsManager,8)          //  Manages the TRD digits
 
 };
-
-//_____________________________________________________________________________
-AliTRDdataArrayI *AliTRDdigitsManager::GetDigits(Int_t det) 
-{
-  //
-  // Returns the digits array for one detector
-  //
-
-  return (AliTRDdataArrayI *) fDigits->At(det);
-
-}
-
-//_____________________________________________________________________________
-AliTRDdataArrayI *AliTRDdigitsManager::GetDictionary(Int_t det, Int_t i) 
-{
-  //
-  // Returns the dictionary for one detector
-  //
-
-  return (AliTRDdataArrayI *) fDictionary[i]->At(det);
-
-}
-
-//_____________________________________________________________________________
-Int_t AliTRDdigitsManager::GetTrack(Int_t track, AliTRDdigit *Digit)
-{
-  // 
-  // Returns the MC-track numbers from the dictionary for a given digit
-  //
-
-  Int_t row  = Digit->GetRow();
-  Int_t col  = Digit->GetCol();
-  Int_t time = Digit->GetTime();
-  Int_t det  = Digit->GetDetector();
-
-  return GetTrack(track,row,col,time,det);
-
-}
-
-//_____________________________________________________________________________
-AliTRDdigitsManager &AliTRDdigitsManager::operator=(AliTRDdigitsManager &m)
-{
-  //
-  // Assignment operator
-  //
-
-  if (this != &m) m.Copy(*this);
-  return *this;
-
-}
-
 #endif