]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONEventReconstructor.h
Obsolete macro removed.
[u/mrichter/AliRoot.git] / MUON / AliMUONEventReconstructor.h
index 51ec18657710ab04234542fcb8fc1e3ab4e8842c..5b9013fa62e4346ab6841682169d678563140222 100644 (file)
@@ -13,21 +13,28 @@ class AliMUONSegment;
 class TClonesArray;
 class TFile;
 class TTree;
+class AliMUONRecoEvent;
 
 // Constants which should be elsewhere ????
-const Int_t MAX_MUON_TRACKING_CHAMBERS = 10;
-const Int_t MAX_MUON_TRACKING_STATIONS = MAX_MUON_TRACKING_CHAMBERS / 2;
+const Int_t kMaxMuonTrackingChambers = 10;
+const Int_t kMaxMuonTrackingStations = kMaxMuonTrackingChambers / 2;
 
 class AliMUONEventReconstructor : public TObject {
 
  public:
   AliMUONEventReconstructor(void); // Constructor
   virtual ~AliMUONEventReconstructor(void); // Destructor
+  AliMUONEventReconstructor (const AliMUONEventReconstructor& Reconstructor); // copy constructor
+  AliMUONEventReconstructor& operator=(const AliMUONEventReconstructor& Reconstructor); // assignment operator
 
   // Parameters for event reconstruction: public methods
   // Get and Set, Set to defaults
   Double_t GetMinBendingMomentum(void) {return fMinBendingMomentum;}
   void SetMinBendingMomentum(Double_t MinBendingMomentum) {fMinBendingMomentum = MinBendingMomentum;}
+  Double_t GetMaxBendingMomentum(void) {return fMaxBendingMomentum;}
+  void SetMaxBendingMomentum(Double_t MaxBendingMomentum) {fMaxBendingMomentum = MaxBendingMomentum;}
+  Double_t GetMaxChi2(void) {return fMaxChi2;}
+  void SetMaxChi2(Double_t MaxChi2) {fMaxChi2 = MaxChi2;}
   Double_t GetMaxSigma2Distance(void) {return fMaxSigma2Distance;}
   void SetMaxSigma2Distance(Double_t MaxSigma2Distance) {fMaxSigma2Distance = MaxSigma2Distance;}
   Double_t GetBendingResolution(void) {return fBendingResolution;}
@@ -56,22 +63,39 @@ class AliMUONEventReconstructor : public TObject {
   void NextBkgGeantEvent(void); // next event in background file for GEANT hits
 
   // Hits for reconstruction
-  Int_t GetNHitsForRec() {return fNHitsForRec;} // Number
+  Int_t GetNHitsForRec(void) {return fNHitsForRec;} // Number
+
+  // Reconstructed tracks
+  Int_t GetNRecTracks() {return fNRecTracks;} // Number
+  void SetNRecTracks(Int_t NRecTracks) {fNRecTracks = NRecTracks;}
+  TClonesArray* GetRecTracksPtr(void) {return fRecTracksPtr;} // Array
+
+  // Hits on reconstructed tracks
+  Int_t GetNRecTrackHits() {return fNRecTrackHits;} // Number
+  void SetNRecTrackHits(Int_t NRecTrackHits) {fNRecTrackHits = NRecTrackHits;}
+  TClonesArray* GetRecTrackHitsPtr(void) {return fRecTrackHitsPtr;} // Array
 
   // Functions
   Double_t GetImpactParamFromBendingMomentum(Double_t BendingMomentum);
   Double_t GetBendingMomentumFromImpactParam(Double_t ImpactParam);
   void EventReconstruct(void);
+  void EventDump(void);  // dump reconstructed event
+  void FillEvent();      // fill and write tree of reconstructed events
+
+ protected:
 
  private:
 
   // Parameters for event reconstruction
   Double_t fMinBendingMomentum; // minimum value (GeV/c) of momentum in bending plane
+  // Parameters for event reconstruction
+  Double_t fMaxBendingMomentum; // maximum value (GeV/c) of momentum in bending plane
+  Double_t fMaxChi2; // maximum Chi2 per degree of Freedom
   Double_t fMaxSigma2Distance; // maximum square distance in units of the variance (maximum chi2)
-  Double_t fRMin[MAX_MUON_TRACKING_CHAMBERS]; // minimum radius (cm)
-  Double_t fRMax[MAX_MUON_TRACKING_CHAMBERS]; // maximum radius (cm)
-  Double_t fSegmentMaxDistBending[MAX_MUON_TRACKING_STATIONS]; // maximum distance (cm) for segments in bending plane
-  Double_t fSegmentMaxDistNonBending[MAX_MUON_TRACKING_STATIONS]; // maximum distance (cm) for segments in bending plane
+  Double_t fRMin[kMaxMuonTrackingChambers]; // minimum radius (cm)
+  Double_t fRMax[kMaxMuonTrackingChambers]; // maximum radius (cm)
+  Double_t fSegmentMaxDistBending[kMaxMuonTrackingStations]; // maximum distance (cm) for segments in bending plane
+  Double_t fSegmentMaxDistNonBending[kMaxMuonTrackingStations]; // maximum distance (cm) for segments in non bending plane
   Double_t fBendingResolution; // chamber resolution (cm) in bending plane
   Double_t fNonBendingResolution; // chamber resolution (cm) in non bending plane
   Double_t fChamberThicknessInX0; // chamber thickness in number of radiation lengths
@@ -96,17 +120,26 @@ class AliMUONEventReconstructor : public TObject {
   TClonesArray *fHitsForRecPtr; // pointer to the array of hits for reconstruction
   Int_t fNHitsForRec; // number of hits for reconstruction
   // Information per chamber (should be in AliMUONChamber ????)
-  Int_t fNHitsForRecPerChamber[MAX_MUON_TRACKING_CHAMBERS]; // number of HitsForRec
-  Int_t fIndexOfFirstHitForRecPerChamber[MAX_MUON_TRACKING_CHAMBERS]; // index (0...) of first HitForRec
+  Int_t fNHitsForRecPerChamber[kMaxMuonTrackingChambers]; // number of HitsForRec
+  Int_t fIndexOfFirstHitForRecPerChamber[kMaxMuonTrackingChambers]; // index (0...) of first HitForRec
 
   // Segments inside a station
-  TClonesArray *fSegmentsPtr[MAX_MUON_TRACKING_STATIONS]; // array of pointers to the segments for each station
-  Int_t fNSegments[MAX_MUON_TRACKING_STATIONS]; // number of segments for each station
+  TClonesArray *fSegmentsPtr[kMaxMuonTrackingStations]; // array of pointers to the segments for each station
+  Int_t fNSegments[kMaxMuonTrackingStations]; // number of segments for each station
 
-  // Tracks
+  // Reconstructed tracks
   TClonesArray *fRecTracksPtr; // pointer to array of reconstructed tracks
   Int_t fNRecTracks; // number of reconstructed tracks
 
+  // Track hits on reconstructed tracks
+  TClonesArray *fRecTrackHitsPtr; // pointer to array of hits on reconstructed tracks
+  Int_t fNRecTrackHits; // number of hits on reconstructed tracks
+
+  // Objects needed for tree writing
+  AliMUONRecoEvent *fRecoEvent; // the reconstructed event
+  TTree            *fEventTree; // tree of reconstructed events
+  TFile            *fTreeFile;  // file where the tree is outputed
+
   // Functions
   void ResetHitsForRec(void);
   void MakeEventToBeReconstructed(void);
@@ -120,15 +153,15 @@ class AliMUONEventReconstructor : public TObject {
   void ResetSegments(void);
   void MakeSegmentsPerStation(Int_t Station);
   void MakeTracks(void);
+  void ResetTrackHits(void);
   void ResetTracks(void);
   Int_t MakeTrackCandidatesWithTwoSegments(AliMUONSegment *BegSegment);
   Int_t MakeTrackCandidatesWithOneSegmentAndOnePoint(AliMUONSegment *BegSegment);
   void MakeTrackCandidates(void);
   void FollowTracks(void);
+  void RemoveDoubleTracks(void);
 
- protected:
-
-  ClassDef(AliMUONEventReconstructor, 1) // Class definition in ROOT context
+  ClassDef(AliMUONEventReconstructor, 0) // MUON event reconstructor in ALICE
     };
        
 #endif