New package for reconstructed tracks (A. Gheata):
[u/mrichter/AliRoot.git] / MUON / AliMUONRecoDisplay.h
1 // Authors : M.Gheata, A.Gheata 09/10/00
2 #ifndef MUON_RECDISPLAY
3 #define MUON_RECDISPLAY
4
5 //////////////////////////////////////////////////////////////////////
6 //                                                                  //
7 // AliMUONRecoDisplay                                               //
8 //                                                                  //
9 // This class subclasses AliDisplay and provides display of         //
10 // reconstructed tracks with following functionality :              //
11 //      - front/top/side/3D display of MUON reconstructed tracks    //
12 //        as polylines ;                                            //
13 //      - context menu activated when the main pad is right-clicked //
14 //      The context menu contains following functions :             //
15 //      * SetDrawHits() - switches on or off Geant hits ;           //
16 //      * CutMomentum() - displays only tracks within Pmin - Pmax   //
17 //      * ListTracks()  - prints ID and momentum info. for all      //
18 //      tracks within momentum range Pmin,Pmax ;                    //
19 //      * Highlight()   - shows only one selected reco. track       //
20 //      and its best matching Geant track;                          //
21 //      * UnHighlight() - self explaining;                          //
22 //      * RecoEfficiency() - compute reco. efficiency for all events//
23 //        from galice.root file; also fake track percentage; make   //
24 //        plots for momentum precision                              //
25 //      * XYPlot()      - make X-Y plots of reconstructed and       //
26 //        generated tracks in all chambers                          //
27 //                                                                  //
28 //      Starting : generate and reconstruct events, then use the    //
29 //                 MUONrecodisplay.C macro                          //
30 //                                                                  //
31 //////////////////////////////////////////////////////////////////////
32
33 #include <TApplication.h>
34 #include <TROOT.h>
35 #include <TFile.h>
36 #include <TPolyLine3D.h>
37 #include <TParticle.h>
38 #include <AliDisplay.h>
39 #include <TTree.h>
40 #include <TH1.h>
41 #include <TH2.h>
42 #include <TCanvas.h>
43 #include <TProfile.h>
44 #include <AliDetector.h>
45 #include "AliMUONHit.h"
46
47
48 class AliMUONRecoDisplay:public AliDisplay {
49
50 private:
51 //methods
52    Int_t              GetBestMatch(Int_t indr, Float_t tolerance=3.0);
53    TClonesArray*      MakePolyLines3D(TClonesArray *tracklist);
54    void               MapEvent(Int_t nevent);
55    Bool_t             IsReconstructible(Int_t track);
56 //data members
57    AliMUONRecoEvent  *fEvGen;                   // Geant event
58    AliMUONRecoEvent  *fEvReco;                  // reconstructed event
59    TFile             *fFile;                    // file with reco. event tree
60    TTree             *fTree;                    // tree with reco. events
61    TClonesArray      *fPolyRecoList;            // list of TPolyLine3D's for reco. tracks
62    TClonesArray      *fPolyGenList;             // list of TPolyLine3D's for generated tracks
63    TClonesArray      *fRecoTracks;              // list of reco tracks
64    TClonesArray      *fGenTracks;               // list of GEANT tracks
65    Int_t              fHighlited;               // index of current highlited track
66    Double_t           fMinMomentum;             // min. cut of momentum
67    Double_t           fMaxMomentum;             // max. cut of momentum
68    Bool_t             fPrinted;                 // tracks info switch
69
70 public:
71    AliMUONRecoDisplay(Int_t nevent=0);
72    virtual             ~AliMUONRecoDisplay();
73    virtual void       DrawHits();
74    virtual void       DrawView(Float_t theta, Float_t phi, Float_t psi = 0);
75    virtual void       SetDrawHits(Bool_t hits = kTRUE);         // *MENU*
76    virtual void       ShowNextEvent(Int_t delta = 1);
77    void               ListTracks();                             // *MENU*
78    void               Highlight(Int_t track=0);                 // *MENU*
79    void               UnHighlight();                            // *MENU*
80    void               CutMomentum(Double_t min=0, Double_t max=999);    // *MENU*
81    void               PolyLineInfo(TClonesArray *line3Dlist);
82    void               RecoEfficiency(Int_t first=0, Int_t last=10000);  // *MENU*
83    void               XYPlot();                                 // *MENU*
84    
85    ClassDef(AliMUONRecoDisplay,0)       // MUON reco. event display
86 };
87
88 #endif