]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONData.h
- ESD can be used instead of AliMUONTrack objects to access the reconstructed variables.
[u/mrichter/AliRoot.git] / MUON / AliMUONData.h
index 7e5709dc2add4f0fbcc2909a7703434a902e0984..8ce3a2520f8c78c7e700b9c14841838b61eee116 100644 (file)
@@ -9,25 +9,15 @@
 //
 /// \ingroup base
 /// \class AliMUONData
-/// \brief MUON data
-///
-/// Class containing MUON data: hits, digits, rawclusters, globaltrigger, 
+/// \brief Class containing MUON data: hits, digits, rawclusters, globaltrigger, 
 /// localtrigger, etc ...
 ///
-/// Author: Gines Martinez, Subatech,  September 2003
+//  Author: Gines Martinez, Subatech,  September 2003
 
 #include <TNamed.h>
 
-class TArrayI;
-
 #include "AliLoader.h"
 
-class TClonesArray;
-class TNamed;
-class TObjArray;
-class TTree;
-class TIterator;
-
 class AliMUONConstants;
 class AliMUONRawCluster;
 class AliMUONTrack;
@@ -35,8 +25,19 @@ class AliMUONTriggerTrack;
 class AliMUONDigit;
 class AliMUONHit;
 class AliMUONLocalTrigger;
+class AliMUONRegionalTrigger;
 class AliMUONGlobalTrigger;
 
+class AliRunLoader;
+
+class TClonesArray;
+class TNamed;
+class TObjArray;
+class TTree;
+class TIterator;
+class TArrayI;
+
+
 //__________________________________________________________________
 /////////////////////////////////////////////////////////////////////
 //                                                                 //
@@ -52,20 +53,11 @@ class AliMUONData : public TNamed
   
     AliMUONData();
     AliMUONData(AliLoader * loader, const char* name, const char* title);
+    AliMUONData(const char* galiceFile);
     virtual ~AliMUONData();  
-    virtual void   AddDigit(Int_t id, Int_t* tracks, Int_t* charges,
-                            Int_t* digits); 
-    virtual void   AddSDigit(Int_t id, Int_t* tracks, Int_t* charges,
-                            Int_t* digits); 
     virtual void   AddDigit(Int_t id, const AliMUONDigit& digit); // use copy constructor
     virtual void   AddSDigit(Int_t id, const AliMUONDigit& digit); // use copy constructor
-    virtual void   AddHit(Int_t fIshunt, Int_t track, Int_t iChamber, 
-                         Int_t idpart, Float_t X, Float_t Y, Float_t Z, 
-                         Float_t tof, Float_t momentum, Float_t theta, 
-                         Float_t phi, Float_t length, Float_t destep, 
-                         Float_t Xref,Float_t Yref,Float_t Zref);
-                         // TBR
-    virtual void   AddHit2(Int_t fIshunt, Int_t track, Int_t detElemId, 
+    virtual void   AddHit(Int_t fIshunt, Int_t track, Int_t detElemId, 
                          Int_t idpart, Float_t X, Float_t Y, Float_t Z, 
                          Float_t tof, Float_t momentum, Float_t theta, 
                          Float_t phi, Float_t length, Float_t destep, 
@@ -74,30 +66,37 @@ class AliMUONData : public TNamed
     virtual void   AddGlobalTrigger(const AliMUONGlobalTrigger& trigger); // use copy constructor
 
     virtual void   AddLocalTrigger(const AliMUONLocalTrigger& trigger); // use copy constructor
+    virtual void   AddRegionalTrigger(const AliMUONRegionalTrigger& trigger); // use copy constructor
 
     virtual void   AddRawCluster(Int_t id, const AliMUONRawCluster& clust);
     virtual void   AddRecTrack(const AliMUONTrack& track);
     virtual void   AddRecTriggerTrack(const AliMUONTriggerTrack& triggertrack);
 
-    TClonesArray*  Hits() {return fHits;}
+    TClonesArray*  Hits() {return fHits;} ///< Return hits
     TClonesArray*  Digits(Int_t DetectionPlane) const;
     TClonesArray*  SDigits(Int_t DetectionPlane) const;
     TClonesArray*  LocalTrigger() const;
+    TClonesArray*  RegionalTrigger() const;
     TClonesArray*  GlobalTrigger() const;    
     TClonesArray*  RawClusters(Int_t DetectionPlane);
-    TClonesArray*  RecTracks() {return fRecTracks;}
+    
+                    /// Return reconstructed tracks
+    TClonesArray*  RecTracks() {return fRecTracks;} 
+                   /// Return reconstructed trigger tracks
     TClonesArray*  RecTriggerTracks() {return fRecTriggerTracks;}
 
-    void           GetTrack(Int_t it) const  {fLoader->TreeH()->GetEvent(it);}
-    Int_t          GetNtracks() const      {return (Int_t) fLoader->TreeH()->GetEntries();}
+    void           GetTrack(Int_t it) const;
+    Int_t          GetNtracks() const;
     void           GetDigits() const;
-    void           GetSDigits() const {fLoader->TreeS()->GetEvent(0);}
-    void           GetRawClusters() const {fLoader->TreeR()->GetEvent(0);}
-    void           GetTrigger() const {fLoader->TreeR()->GetEvent(0);}
-    void           GetTriggerD() const {fLoader->TreeD()->GetEvent(0);}
+    void           GetSDigits() const;
+    void           GetRawClusters() const;
+    void           GetTrigger() const;
+    void           GetTriggerD() const;
+    void           GetRecTracks() const;
+    void           GetRecTriggerTracks() const;
+
     Int_t          GetSplitLevel() const {return fSplitLevel;}
-    void           GetRecTracks() const {fLoader->TreeT()->GetEvent(0);}
-    void           GetRecTriggerTracks() const {fLoader->TreeT()->GetEvent(0);}
 
     Bool_t        IsRawClusterBranchesInTree();
     Bool_t        IsDigitsBranchesInTree();
@@ -106,13 +105,17 @@ class AliMUONData : public TNamed
     Bool_t        IsTrackBranchesInTree();
     Bool_t        IsTriggerTrackBranchesInTree();
 
+                       /// Get loader
     virtual AliLoader* GetLoader() const { return fLoader; }
+                       /// Set loader
     virtual void       SetLoader(AliLoader * loader) {fLoader=loader;}    
     
     virtual void   Fill(Option_t* opt=" ");
     virtual void   MakeBranch(Option_t *opt=" ");
+    virtual void   SetDataContainer(Option_t *opt=" ");
     virtual void   SetTreeAddress(Option_t *opt=" ");
     
+                   /// Set split level
     void           SetSplitLevel(Int_t SplitLevel) {fSplitLevel=SplitLevel;}
     
     virtual void Print(Option_t* opt="") const;
@@ -125,19 +128,32 @@ class AliMUONData : public TNamed
     virtual void   ResetRecTracks();
     virtual void   ResetRecTriggerTracks();
   
+                   /// Return tree with hits
     TTree*         TreeH() {return fLoader->TreeH(); }
+                   /// Return tree with digits
     TTree*         TreeD() {return fLoader->TreeD(); }
+                   /// Return tree with summable digits
     TTree*         TreeS() {return fLoader->TreeS(); }
+                   /// Return tree with raw clusters
     TTree*         TreeR() {return fLoader->TreeR(); }
+                   /// Return tree with tracks
     TTree*         TreeT() {return fLoader->TreeT(); }
+                   /// Return tree with particles
     TTree*         TreeP() {return fLoader->TreeP(); }
 
-    //    TIterator* CreateDigitIterator(AliMUONData::EChamberIteration type);
+                   // Methods to dump data
+    void DumpKine(Int_t event2Check=0);
+    void DumpHits(Int_t event2Check=0, Option_t* opt="full");
+    void DumpDigits(Int_t event2Check=0, Option_t* opt="tracks");
+    void DumpSDigits(Int_t event2Check=0, Option_t* opt="tracks");
+    void DumpRecPoints(Int_t event2Check=0, Option_t* opt="full");
+    void DumpRecTrigger(Int_t event2Check=0, Int_t write = 0, Bool_t readFromRP = kTRUE);
     
   protected: 
     AliMUONData(const AliMUONData& rhs);
     AliMUONData& operator=(const AliMUONData& rhs);
 
+    AliRunLoader*   fRunLoader; //!< Run loader pointer
     AliLoader*      fLoader;  //!< Detector Loader pointer
     TClonesArray*   fHits;    ///< One event in treeH per primary track
     TObjArray*      fDigits;  ///< One event in treeD and one branch per detection plane
@@ -145,6 +161,8 @@ class AliMUONData : public TNamed
     TObjArray*      fRawClusters; ///< One event in TreeR/Rawcluster and one branch per tracking detection plane
     TClonesArray*   fGlobalTrigger; ///< List of Global Trigger One event in TreeR/GlobalTriggerBranch
     TClonesArray*   fLocalTrigger;  ///< List of Local Trigger, One event in TreeR/LocalTriggerBranch
+    TClonesArray*   fRegionalTrigger;  ///< List of Regional Trigger, One event in TreeR/LocalTriggerBranch
+
     TClonesArray*   fRecTracks; ///< pointer to array of reconstructed tracks
     TClonesArray*   fRecTriggerTracks; ///< pointer to array of reconstructed trigger tracks
 
@@ -154,6 +172,7 @@ class AliMUONData : public TNamed
     Int_t*          fNrawclusters;  //!< Number of Raw Clusters
     Int_t           fNglobaltrigger;//!< Number of Global trigger
     Int_t           fNlocaltrigger; //!< Number of Local trigger
+    Int_t           fNregionaltrigger; //!< Number of regional trigger
     Int_t           fNrectracks;    //!< Number of reconstructed tracks
     Int_t           fNrectriggertracks; //!< Number of reconstructed tracks
     Int_t           fSplitLevel;   ///< Splitting of branches 0 no spitting (root files are smaller) 1 splitting (larger output files)
@@ -165,6 +184,51 @@ private:
   ClassDef(AliMUONData,3) // Data accessor for MUON module
       
 };
+// inline functions
+
+
+/// Load hits for \a i th entry in hits three
+inline void AliMUONData::GetTrack(Int_t it) const  {
+  if (fLoader && fLoader->TreeH())
+    fLoader->TreeH()->GetEvent(it);
+}
+
+/// Load sdigits tree
+inline void AliMUONData::GetSDigits() const {
+  if (fLoader && fLoader->TreeS())
+    fLoader->TreeS()->GetEvent(0);
+}
+
+/// Load raw clusters tree
+inline void AliMUONData::GetRawClusters() const {
+  if (fLoader && fLoader->TreeR())
+    fLoader->TreeR()->GetEvent(0);
+}
+
+/// Load trigger tree
+inline void AliMUONData::GetTrigger() const {
+  if (fLoader && fLoader->TreeR())
+    fLoader->TreeR()->GetEvent(0);
+}
+
+/// Load trigger D tree
+inline void AliMUONData::GetTriggerD() const {
+  if (fLoader && fLoader->TreeD())
+    fLoader->TreeD()->GetEvent(0);
+}
+
+/// Return reconstructed tracks
+inline void AliMUONData::GetRecTracks() const {
+  if (fLoader && fLoader->TreeT())
+    fLoader->TreeT()->GetBranch("MUONTrack")->GetEvent(0);
+}
+
+/// Return reconstructed trigger tracks
+inline void AliMUONData::GetRecTriggerTracks() const {
+  if (fLoader && fLoader->TreeT())
+    fLoader->TreeT()->GetBranch("MUONTriggerTrack")->GetEvent(0);
+}
+
 
 
 #endif