]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/alice-macros/emcal_all.C
Modified macros to be compilable by ACLiC
[u/mrichter/AliRoot.git] / EVE / alice-macros / emcal_all.C
1 //************************************************************************
2 // A macro to read and visualize EMCAL data
3 // The macro: 
4 // - can read hits, digits and clusters information from AliRunLoader:
5 //      emcal_data->LoadHits(ht); 
6 //      emcal_data->LoadDigits(dt);
7 //      emcal_data->LoadRecPoints(rt);
8 // - can read hits, digits and clusters information from AliEMCALLoader:
9 //      rl->GetEvent(evtNum);
10 //      emcal_data->LoadHitsFromEMCALLoader(emcl);       // Does not work
11 //      emcal_data->LoadDigitsFromEMCALLoader(emcl);     
12 //      emcal_data->LoadRecPointsFromEMCALLoader(emcl); 
13 // - can read hits, digits and clusters information from ESDs
14 //      emcal_data->LoadDigitsFromESD();
15 //      emcal_data->LoadClustersFromESD();
16 // - will read hits, digits and clusters information from raw
17 //   => To be implemented
18 //
19 //************************************************************************
20 //  Author: Magali Estienne (magali.estienne@cern.ch)
21 //  June 30 2008
22 //************************************************************************
23 #if !defined(__CINT__) || defined(__MAKECINT__)
24 #include <Riostream.h>
25 #include <TGeoManager.h>
26 #include <TGeoNode.h>
27 #include <TGeoMatrix.h>
28 #include <TMath.h>
29 #include <TString.h>
30 #include <TTree.h>
31 #include <TStyle.h>
32 #include <TEveManager.h>
33 #include <TEveElement.h>
34 #include <TEvePointSet.h>
35
36 #include <EMCAL/AliEMCAL.h>
37 #include <EMCAL/AliEMCALLoader.h>
38 #include <STEER/ESD/AliESDEvent.h>
39 #include <STEER/ESD/AliESDtrack.h>
40 #include <STEER/ESD/AliTrackPointArray.h>
41 #include <STEER/STEER/AliRunLoader.h>
42 #include <EVE/EveBase/AliEveEventManager.h>
43 #include <EVE/EveBase/AliEveMultiView.h>
44 #include <EVE/EveDet/AliEveEMCALData.h>
45 #include <EVE/EveDet/AliEveEMCALSModule.h>
46
47 #else
48 class AliEveEMCALData;
49 #endif
50
51 AliEveEMCALData     *emcal_data       = 0;
52
53 void emcal_all(const UInt_t evtNum = 0, Bool_t digFile = 0, 
54                const UInt_t eventsToProcess = 5, TString dirName = "./", 
55                const TString esdTreeName = "esdTree", const char *  pattern = ".")
56 {
57
58   Int_t iLoader             = 1;
59   Int_t iESD                = 1;
60   Int_t iAOD                = 0;
61   Int_t iHits               = 1;
62   Int_t iDigits             = 1;
63   Int_t iClusters           = 1;
64
65   AliRunLoader* rl =  AliEveEventManager::AssertRunLoader();
66   // runloader check already in AssertRunLoader function 
67   AliESDEvent* esd = 0x0;
68   if(iESD) esd = AliEveEventManager::AssertESD();
69   // esd check already in AssertESD function 
70   AliEMCALLoader *emcl = dynamic_cast<AliEMCALLoader*> (rl->GetDetectorLoader("EMCAL"));
71   Int_t evtID = AliEveEventManager::GetMaster()->GetEventId();
72   if(evtID != evtNum) AliEveEventManager::GetMaster()->GotoEvent(evtNum);
73
74   TTree* ht = 0x0; 
75   TTree* dt = 0x0; 
76   TTree* rt = 0x0; 
77   if(iLoader)
78     {
79       //Load Hits
80       if(iHits) {
81         if(!rl->LoadHits("EMCAL"))
82           ht = rl->GetTreeH("EMCAL",false);
83         else {printf("Please make sure a have a EMCal.Hits.root file \n"); return;}
84       }
85       //Load Digits
86       if(iDigits) {
87         if(!rl->LoadDigits("EMCAL"))
88           dt = rl->GetTreeD("EMCAL",false);
89         else {printf("Please make sure a have a EMCal.Digits.root file \n"); return;}
90       }
91       //Load RecPoints
92       if(iClusters) {
93         if(!rl->LoadRecPoints("EMCAL"))
94           rt = rl->GetTreeR("EMCAL",false);
95         else {printf("Please make sure a have a EMCal.RecPoints.root file \n"); return;}
96       }
97     }
98
99   //  gGeoManager = gEve->GetDefaultGeometry();
100   AliEveEventManager::AssertGeometry();
101   TGeoNode* node = gGeoManager->GetTopVolume()->FindNode("XEN1_1");
102   TGeoHMatrix* m = gGeoManager->GetCurrentMatrix();
103   emcal_data = new AliEveEMCALData(rl,node,m);
104   if(iESD) emcal_data->SetESD(esd);
105
106   // Get information from RunLoader
107   if(iLoader)
108     {
109       if(iHits)     emcal_data->LoadHits(ht); // Does not work with my aliroot version 
110       if(iDigits)   emcal_data->LoadDigits(dt);
111       if(iClusters) emcal_data->LoadRecPoints(rt);
112       
113       rl->GetEvent(evtNum);
114
115       if(iHits)     emcal_data->LoadHitsFromEMCALLoader(emcl);       
116       if(iDigits)   emcal_data->LoadDigitsFromEMCALLoader(emcl);     
117       if(iClusters) emcal_data->LoadRecPointsFromEMCALLoader(emcl); 
118     }
119
120   // Get information from ESDs
121   if(iESD)
122     {
123       rl->GetEvent(evtNum);
124       if(iDigits) emcal_data->LoadDigitsFromESD();
125       if(iClusters) emcal_data->LoadRecPointsFromESD();
126     }
127
128   gStyle->SetPalette(1, 0);
129
130   gEve->DisableRedraw();
131
132   TEveElementList* l = new TEveElementList("EMCAL");
133   l->SetTitle("Tooltip");
134   l->SetMainColor(Color_t(2));
135   gEve->AddElement(l);
136
137   for (Int_t sm=0; sm<12; sm++)
138     {
139       AliEveEMCALSModule* esm = new AliEveEMCALSModule(sm,Form("SM %d Element \n", sm),"test");
140       //      esm->SetSModuleID(sm);
141       esm->SetDataSource(emcal_data);
142       esm->UpdateQuads();
143       l->AddElement(esm);
144     }
145
146   gEve->Redraw3D(kTRUE);
147
148   gEve->EnableRedraw();
149
150
151 }