]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVEANALYSIS/AliEveLego.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / EVEANALYSIS / AliEveLego.h
1 // $Id$
2 // Author: Stefano Carrazza 2010, CERN, stefano.carrazza@cern.ch
3
4 /**************************************************************************
5  * Copyright(c) 1998-2009, ALICE Experiment at CERN, all rights reserved. *
6  * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
7  * full copyright notice.                                                 *
8  **************************************************************************/
9
10 #ifndef ALIEVELEGO_H
11 #define ALIEVELEGO_H
12
13 #include "TEveElement.h"
14
15 class AliESDEvent;
16 class AliEveEventSelector;
17 class AliEveMultiView;
18 class AliESDtrack;
19 class AliPhysicsSelection;
20
21 class TEveCalo3D;
22 class TEveCaloDataHist;
23 class TEveCaloLego;
24 class TEveCaloLegoOverlay;
25 class TEveScene;
26 class TEveViewer;
27 class TEveWindowSlot;
28 class TGLOverlayButton;
29 class TGLViewer;
30 class TH2F;
31
32 //______________________________________________________________________________
33 // 2D & 3D calorimeter like histograms from the ESD data.
34 //
35
36 class AliEveLego : public TEveElementList
37 {
38 public:
39   AliEveLego(const char* name="AliEveLego");
40   virtual ~AliEveLego();
41
42   // Get Methods
43   TEveCalo3D*       GetCalo3D()         {   return fCalo3d;           }
44   TEveCalo3D*       GetCalo3DAllEvents(){   return fCalo3dAllEvents;  }
45   TEveCaloDataHist* GetData()           {   return fData;             }
46   TEveCaloDataHist* GetDataAllEvents()  {   return fDataAllEvents;    }
47   AliESDEvent*      GetESD()            {   return fEsd;              }
48   TEveCaloLego*     GetLego()           {   return fLego;             }
49   TEveCaloLego*     GetLegoAllEvents()  {   return fLegoAllEvents;    }
50   AliEveMultiView*  GetMultiView()      {   return fAl;               }
51   Int_t             GetParticleType(AliESDtrack *track);
52   Float_t           GetPtMax();
53   Float_t           GetPtMaxAE();
54
55   // Set Methods
56   void SetCollisionCandidatesOnly();
57   void SetMaxPt(Double_t val);
58   void SetMaxPtAE(Double_t val);
59   void SetParticleType(Int_t id, Bool_t status);
60   void SetParticleTypeAE(Int_t id, Bool_t status);
61   void SetThreshold(Double_t val);
62   void SetThresholdAE(Double_t val);
63   void SetTracks(Int_t id)   {  fTracksId = id;    Update();         }
64   void SetTracksAE(Int_t id) {  fTracksIdAE = id;  FilterAllData();  }
65
66   // Functions
67   void              ApplyParticleTypeSelectionAE();
68   TEveCaloLego*     CreateHistoLego();
69   TEveCaloLego*     CreateHistoLego(TEveWindowSlot* slot);
70   TEveCalo3D*       Create3DView();
71   TEveCalo3D*       Create3DView(TEveWindowSlot* slot);
72   void              CreateProjections(TEveWindowSlot* slot1,
73                                       TEveWindowSlot* slot2);
74   TEveCaloDataHist* FilterData();
75   TEveCaloDataHist* FilterAllData();
76   TEveCaloDataHist* LoadData();
77   TEveCaloDataHist* LoadAllData();
78   TEveCaloDataHist* LoadAllEvents();
79   void              SwitchDataType(Bool_t status);
80   void              Update();
81
82
83 private:
84   Bool_t              fIsMC;                    // Switch to MC mode for AliPhysicsSelection
85   Bool_t              fCollisionCandidatesOnly; // Activate flag when loading all events
86   Bool_t              *fParticleTypeId;         // Determine how particles to show
87   Bool_t              *fParticleTypeIdAE;       // Determine how particles to show
88   Int_t               fTracksId;                // Determine tracks selection
89   Float_t             fMaxPt;                   // Set maximum pT
90   Int_t               fTracksIdAE;              // Determine tracks selection for all events
91   Float_t             fMaxPtAE;                 // Determine maximum pT for all events
92   AliESDEvent         *fEsd;                    // ESD tree
93   AliPhysicsSelection *fPhysicsSelection;       // Physics selection object
94   TH2F                *fHistopos;               // Positive charge histogram
95   TH2F                *fHistoposAllEvents;      // Positive charge histogram for all events
96   TH2F                *fHistoneg;               // Negative charge histogram
97   TH2F                *fHistonegAllEvents;      // Negative charge histogram for all events
98   TH2F                *fHistoElectrons;         // Electrons histogram
99   TH2F                *fHistoElectronsAllEvents;// Electrons histogram all events
100   TH2F                *fHistoMuons;             // Muons histogram
101   TH2F                *fHistoMuonsAllEvents;    // Muons histogram all events
102   TH2F                *fHistoPions;             // Pions histogram
103   TH2F                *fHistoPionsAllEvents;    // Pions histogram all events
104   TH2F                *fHistoKaons;             // Kaons histogram
105   TH2F                *fHistoKaonsAllEvents;    // Kaons histogram all events
106   TH2F                *fHistoProtons;           // Protons histogram
107   TH2F                *fHistoProtonsAllEvents;  // Protons histogram all events
108   TEveCaloDataHist    *fData;                   // Calo data for 2D, 3D histograms
109   TEveCaloDataHist    *fDataAllEvents;          // Calo data for all events
110   TEveCaloLego        *fLego;                   // Calo lego for histograms
111   TEveCaloLego        *fLegoAllEvents;          // Calo lego for all events histograms
112   TEveCalo3D          *fCalo3d;                 // 3D histogram for single event
113   TEveCalo3D          *fCalo3dAllEvents;        // 3D histogram for all events
114   TGLViewer           *fGlv;                    // Viewer object
115   TEveViewer          *fHisto2dv;               // Viewer for histograms
116   TEveScene           *fHisto2ds;               // Scene for 3d histogram
117   TEveScene           *fHisto2ds2;              // Scene for 3d histogram new tab
118   TEveViewer          *fHisto2dAllEventsv0;     // Viewer 1 for all events tab
119   TEveViewer          *fHisto2dAllEventsv1;     // Viewer 2 for all events tab
120   TEveViewer          *fHisto2dAllEventsv2;     // Viewer 3 for all events tab
121   TEveViewer          *fHisto2dAllEventsv3;     // Viewer 4 for all events tab
122   TEveScene           *fHisto2dAllEventss0;     // Scene for all events tab
123   TEveScene           *fHisto2dAllEventss1;     // Scene for all events tab
124   TEveScene           *fHisto2dAllEventss2;     // Scene for all events tab
125   TEveScene           *fHisto2dAllEventss3;     // Scene for all events tab
126   AliEveMultiView     *fAl;                     // AliEveMultiView object to create 2D projections
127   TEveCaloLegoOverlay *fHisto2dLegoOverlay;     // Overlay for calo lego
128   TEveCaloLegoOverlay *fHisto2dAllEventsLegoOverlay; // Overlay for calo lego all events
129   TEveWindowSlot      *fHisto2dAllEventsSlot;   // Window slot for 2d all events histogram
130
131   AliEveLego(const AliEveLego&);                // Not implemented
132   AliEveLego& operator=(const AliEveLego&);     // Not implemented
133
134
135   ClassDef(AliEveLego, 0); // Short description.
136 };
137
138 #endif