]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TRD/AliTRDtrigger.h
Updated TRD trigger code. Now the trigger code can run:
[u/mrichter/AliRoot.git] / TRD / AliTRDtrigger.h
index 672dd4b9012c4f7f9162edb9c634b9759cc1ab92..cc6d2ddceb69c2649ba354ce6fbacfea4424e27f 100644 (file)
 //                                                                           //
 ///////////////////////////////////////////////////////////////////////////////
 
+#include <TNamed.h>
 #include <TObjArray.h>
 #include <TClonesArray.h>
-#include <TNamed.h>
-#include <TFile.h>
-
-#include "AliTRDzmaps.h"
-#include "AliRunLoader.h"
-#include "AliLoader.h"
-
-const Int_t kNplan     =   6;
-const Int_t kNmaxZchan = 100;       // max number of tracklets per subchannel
-const Int_t kNsubZchan =  16;       // total number of subchannels
-const Int_t kNmaxTrk   =  12;       // max number of tracklets in one track (6*2)
-
-class AliTRDltuTracklet : public TObject {
-  
- public:
-
-  AliTRDltuTracklet(Int_t det, 
-                   Int_t row, 
-                   Float_t rowz,
-                   Float_t slope, 
-                   Float_t offset, 
-                   Float_t time, 
-                   Int_t ncl,
-                   Int_t label,
-                   Float_t q);
-  ~AliTRDltuTracklet(){};
-
-  Bool_t  IsSortable() const { return kTRUE; }
-  virtual Int_t   Compare(const TObject *o) const;
-  Int_t   GetDetector() { return fDetector; };
-  Int_t   GetPlane(Int_t det) { return ((Int_t) (det % kNplan)); };
-  Int_t   GetRow()      { return fRow; };
-  Int_t   GetNclusters(){ return fNclusters; };
-  Float_t GetSlope()    { return fSlope; };
-  Float_t GetOffset()   { return fY; };
-  Float_t GetTime0()    { return fX; };
-  Float_t GetRowz()     { return fRowz; };
-  virtual Float_t GetYproj(Float_t xpl);
-  virtual Float_t GetZproj(Float_t xpl);
-  Int_t   GetLabel()    { return fLabel; };
-  Float_t GetPt(Float_t field);
-  Float_t GetQ() { return fQ; };
-
- protected:
-
-  Float_t fX;                              // distance vertex to entrance window
-  Float_t fY;                              // tracklet offset at entrance window
-  Float_t fSlope;
-  Float_t fRowz;
-  Int_t   fDetector;
-  Int_t   fRow;
-  Int_t   fNclusters;
-  Int_t   fLabel;
-  Float_t fQ;                              // charge sum divided by number of clusters
-
-  ClassDef(AliTRDltuTracklet,1)
-
-};
-
-class AliTRDltuTracklet;
-
-class AliTRDgtuTrack : public TObject {
-
- public:
-
-  AliTRDgtuTrack();
-  AliTRDgtuTrack(const AliTRDgtuTrack& track);
-  ~AliTRDgtuTrack(){};
-
-  Bool_t  IsSortable() const { return kTRUE; }
-  virtual Int_t   Compare(const TObject *o) const;
-
-  virtual void Reset();
-  void  ResetTracklets() { if(fTracklets) fTracklets->Delete(); };
-  virtual void AddTracklet(AliTRDltuTracklet *trk);
-  virtual AliTRDltuTracklet *GetTracklet(Int_t pos);
-  TObjArray     *Tracklets() { 
-    if(!fTracklets) fTracklets = new TObjArray(400); return fTracklets; 
-  };
-  Int_t          GetNtracklets() {
-    if (fTracklets) return fTracklets->GetEntriesFast();
-    return 0;
-  };
-  Float_t GetYproj()     { return fYproj; };
-  Float_t GetZproj()     { return fZproj; };
-  Float_t GetSlope()     { return fSlope; };
-  Int_t   GetTracklets() { return fNtracklets; };
-  Int_t   GetPlanes()    { return fNplanes; };
-  Int_t   GetClusters()  { return fNclusters; };
-  Float_t GetPt()        { return fPt; };
-  Float_t GetPhi()       { return fPhi; };
-  Float_t GetEta()       { return fEta; };
-  Int_t   GetLabel()     { return fLabel; };
-
-  virtual void Track(Float_t xpl, Float_t field);
-
-  virtual void CookLabel();
-
-  void  SetDetector(Int_t det) { fDetector = det; };
-  Int_t GetDetector() { return fDetector; };
-
-  virtual void MakePID();
-  Float_t GetPID() { return fPID; };
-
-  Bool_t  IsElectron() { return fIsElectron; };
-
- protected:
-
-  TObjArray          *fTracklets;                   //! Array of LTU tracklets
-
-  Float_t fYproj;                                   // Average values calculated
-  Float_t fZproj;                                   // from the tracklets 
-  Float_t fSlope;
-
-  Int_t   fDetector;                                // First detector in the module
-
-  Int_t   fNtracklets;                              // Number of tracklets
-  Int_t   fNplanes;                                 // Number of TRD planes
-  Int_t   fNclusters;                               // Total number of clusters
 
-  Float_t fPt;                                      // Transverse momentum
-  Float_t fPhi;                                     // Phi angle at the vertex
-  Float_t fEta;                                     // Eta at the vertex
-  Int_t   fLabel;                                   // Track label
-  Float_t fPID;                                     // PID electron likelihood
-  Bool_t  fIsElectron;                              // Electron flag
+#include "AliTRDgtuTrack.h"
 
-  ClassDef(AliTRDgtuTrack,1)
-
-};
-
-class AliTRDgtuTrack;
-class AliTRDtrigParam;
-
-class AliTRDmodule : public TObject {
-
- public:
-
-  AliTRDmodule(AliTRDtrigParam *trigp);
-
-  virtual void   Reset();
-
-  virtual void   AddTracklet(Int_t det, 
-                            Int_t row, 
-                            Float_t rowz,
-                            Float_t slope, 
-                            Float_t offset, 
-                            Float_t time, 
-                            Int_t ncl,
-                            Int_t label,
-                            Float_t q);
-
-  TObjArray     *Tracklets() { 
-    if(!fTracklets) fTracklets = new TObjArray(400); return fTracklets; 
-  };
-
-  void           ResetTracklets() { if(fTracklets) fTracklets->Delete(); };
-  void           SortTracklets()  { if(fTracklets) fTracklets->Sort(); };
-  virtual AliTRDltuTracklet *GetTracklet(Int_t pos);
-  virtual void   RemoveMultipleTracklets();
-  virtual void   RemoveTracklet(Int_t pos);
-  Int_t          GetNtracklets() {
-    if (fTracklets) return fTracklets->GetEntriesFast();
-    return 0;
-  };
-
-  virtual void   AddTrack();
-
-  TObjArray     *Tracks() { 
-    if(!fTracks) fTracks = new TObjArray(400); return fTracks; 
-  };
-
-  virtual void   ResetTracks();
-  void           SortTracks()  { if(fTracks) fTracks->Sort(); };
-  virtual AliTRDgtuTrack *GetTrack(Int_t pos);
-  virtual void   RemoveMultipleTracks();
-  virtual void   RemoveTrack(Int_t pos);
-  Int_t          GetNtracks() {
-    if (fTracks) return fTracks->GetEntriesFast();
-    return 0;
-  };
-
-  virtual void   SortZ(Int_t cha);
-  virtual void   InitZLUT();
-  virtual void   FindTracks();
-  virtual void   FindTracksCombi(Int_t zchan);
-
- protected:
-
-  Float_t             fXprojPlane;                  //! X (time) coordinate of the
-                                                    //  projection plane
-  Float_t             fField;                       //! Magnetic field
-  TObjArray          *fTracklets;                   //! Array of LTU tracklets
-  TObjArray          *fTracks;                      //! Array of GTU tracks
-
-  Int_t fZnchan[kNplan][kNsubZchan];                //! number of LTU tracklets in each 
-                                                    //  subchannel
-  Int_t fZtrkid[kNplan][kNmaxZchan][kNsubZchan];    //! list of LTU tracklet id's for 
-                                                    //  each subchannel
-
-  Float_t  fDeltaY;                        // Y (offset) matching window in the GTU
-  Float_t  fDeltaS;                        // Slope matching window in the GTU
-
-  AliTRDltuTracklet  *fLTUtrk;                      //! Current LTU tracklet
-  AliTRDgtuTrack     *fGTUtrk;                      //! Current GTU track
-
-  ClassDef(AliTRDmodule,1)
-
-};
+class TTree;
 
 class AliTRDdigitsManager;
 class AliTRDdataArrayI;
@@ -230,14 +26,13 @@ class AliRawReader;
 class AliTRDmcmTracklet;
 class AliTRDmcm;
 class AliTRDmodule;
-
-class TTree;
+class AliTRDtrigParam;
 
 class AliTRDtrigger : public TNamed {
 
  public:  
 
-  enum { kNMCM = 16 };
+  enum { kNMCM = 16, kMaxTrackletsPerMCM = 4, kMcmCol = 21 };
 
   AliTRDtrigger();
   AliTRDtrigger(const Text_t* name, const Text_t* title);
@@ -247,26 +42,26 @@ class AliTRDtrigger : public TNamed {
   AliTRDtrigger &operator=(const AliTRDtrigger &p); 
   virtual void Copy(TObject &p) const;
 
-  virtual void Init();
+  void Init();
 
-  void SetRunLoader(AliRunLoader *rl) { fRunLoader = rl; };
-  virtual Bool_t Open(const Char_t *name, Int_t nEvent = 0);
-  virtual Bool_t ReadDigits();
-  virtual Bool_t ReadDigits(AliRawReader* rawReader);
-  virtual Bool_t MakeTracklets();
-  virtual Bool_t WriteTracklets(Int_t det);
-  virtual Bool_t ReadTracklets(AliRunLoader *rl);
+  void   SetRunLoader(AliRunLoader *rl) { fRunLoader = rl; };
+  Bool_t Open(const Char_t *name, Int_t nEvent = 0);
+  Bool_t ReadDigits();
+  Bool_t ReadDigits(AliRawReader* rawReader);
+  Bool_t MakeTracklets(Bool_t makeTracks = kFALSE);
+  Bool_t WriteTracklets(Int_t det);
+  Bool_t ReadTracklets(AliRunLoader *rl);
 
-  virtual void   AddTracklet(Int_t det, Int_t row, Int_t seed, Int_t n);
-  TObjArray     *Tracklets() { 
+  void   AddTracklet(Int_t det, Int_t row, Int_t seed, Int_t n);
+  TObjArray *Tracklets() { 
     if(!fTracklets) fTracklets = new TObjArray(400); return fTracklets; 
   };
-  void           ResetTracklets() { if(fTracklets) fTracklets->Delete(); };
-  virtual void   SetMCMcoordinates(Int_t imcm);
-  virtual void   SetParameter(AliTRDtrigParam *trigp) { fTrigParam = trigp; };
-  AliTRDtrigParam *GetParameter() { return fTrigParam; };
+  void   ResetTracklets() { if(fTracklets) fTracklets->Delete(); };
+  void   SetMCMcoordinates(Int_t imcm);
+  void   SetParameter(AliTRDtrigParam *trigp) { fTrigParam = trigp; };
+  AliTRDtrigParam *GetParameter() const { return fTrigParam; };
 
-  virtual void   MakeTracks(Int_t det);
+  void   MakeTracks(Int_t det);
 
   AliTRDgtuTrack *GetTrack(Int_t i) const {
     return (AliTRDgtuTrack *)fTracks.UncheckedAt(i);
@@ -277,7 +72,7 @@ class AliTRDtrigger : public TNamed {
   }
   Int_t GetNumberOfTracks() const {return fTracks.GetEntriesFast();}
 
-  Int_t GetNPrimary() { return fNPrimary; };
+  Int_t GetNPrimary() const { return fNPrimary; };
 
  protected:
 
@@ -304,7 +99,7 @@ class AliTRDtrigger : public TNamed {
 
   TClonesArray           fTracks;                      //! Array of GTU tracks
 
-  ClassDef(AliTRDtrigger,1)                            //  TRD trigger class
+  ClassDef(AliTRDtrigger,2)                            //  TRD trigger class
 
 };