]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/EVE/AliHLTEvePhos.cxx
compilation warnings fixed
[u/mrichter/AliRoot.git] / HLT / EVE / AliHLTEvePhos.cxx
1 /**************************************************************************
2  * This file is property of and copyright by the ALICE HLT Project        *
3  * ALICE Experiment at CERN, All rights reserved.                         *
4  *                                                                        *
5  * Primary Authors: Svein Lindal <slindal@fys.uio.no   >                  *
6  *                  for The ALICE HLT Project.                            *
7  *                                                                        *
8  * Permission to use, copy, modify and distribute this software and its   *
9  * documentation strictly for non-commercial purposes is hereby granted   *
10  * without fee, provided that the above copyright notice appears in all   *
11  * copies and that both the copyright notice and this permission notice   *
12  * appear in the supporting documentation. The authors make no claims     *
13  * about the suitability of this software for any purpose. It is          *
14  * provided "as is" without express or implied warranty.                  *
15  **************************************************************************/
16
17 /// @file   AliHLTEvePhos.cxx
18 /// @author Svein Lindal <slindal@fys.uio.no>
19 /// @brief  PHOS class for the HLT EVE display
20
21 #include "AliHLTEvePhos.h"
22 #include "AliHLTHOMERBlockDesc.h"
23 #include "TCanvas.h"
24 #include "TEveBoxSet.h"
25 #include "AliPHOSGeoUtils.h"
26 #include "AliPHOSGeometry.h"
27 #include "TVector3.h"
28 #include "AliEveHLTEventManager.h"
29 #include "TEveManager.h"
30 #include "AliHLTCaloDigitDataStruct.h"
31 #include "AliHLTCaloClusterDataStruct.h"
32 #include "AliHLTCaloClusterReader.h"
33 #include "TEveTrans.h"
34
35 ClassImp(AliHLTEvePhos)
36
37 AliHLTEvePhos::AliHLTEvePhos() : 
38 AliHLTEveCalo(5, "PHOS"),
39 fGeoUtils(NULL)
40 {
41   // Constructor.
42   fGeoUtils = new AliPHOSGeoUtils("PHOS", "noCPV");
43   CreateElementList();
44
45 }
46
47 AliHLTEvePhos::~AliHLTEvePhos()
48 {
49   //Destructor
50   if(fGeoUtils)
51     delete fGeoUtils;
52   fGeoUtils = NULL;
53 }
54
55 void AliHLTEvePhos::CreateElementList() {
56   //See header file for documentation
57
58   fBoxSetClusters = new TEveBoxSet[fNModules];
59   fBoxSetDigits = new TEveBoxSet[fNModules];
60
61   AliPHOSGeometry * geo = AliPHOSGeometry::GetInstance("IHEP", "IHEP");
62   
63   TVector3 center;
64   Float_t angle;
65   
66   // -- Create boxsets
67   for(int im = 0; im < fNModules; im++) {
68     
69     TEveRGBAPalette* pal = new TEveRGBAPalette(0,512);
70     pal->SetLimits(-1, 45);
71
72     //Create clusters box set
73     fBoxSetClusters[im].SetTitle(Form("Clusters Module %d", im));
74     fBoxSetClusters[im].SetName(Form("Clusters Module %d", im));
75     fBoxSetClusters[im].SetPalette(pal);
76     fBoxSetClusters[im].Reset(TEveBoxSet::kBT_AABox, kFALSE, 64);
77     fBoxSetClusters[im].SetOwnIds(kTRUE);
78     
79     
80     geo->GetModuleCenter(center, "CPV", im+1);
81     angle = geo->GetPHOSAngle(im+1)*TMath::Pi()/180;
82     
83     fBoxSetClusters[im].RefitPlex();
84     TEveTrans& t = fBoxSetClusters[im].RefMainTrans();
85     t.SetupRotation(1, 2, angle );
86     t.SetPos(center.X(), center.Y(), center.Z());
87     
88     AddElement(&fBoxSetClusters[im]);
89
90
91     //Create digits box set
92     fBoxSetDigits[im].SetTitle(Form("Digits Module %d", im));
93     fBoxSetDigits[im].SetName(Form("Digits Module %d", im));
94     fBoxSetDigits[im].SetPalette(pal);
95     fBoxSetDigits[im].Reset(TEveBoxSet::kBT_AABox, kFALSE, 64);
96     fBoxSetDigits[im].SetOwnIds(kTRUE);
97     
98     
99     geo->GetModuleCenter(center, "CPV", im+1);
100     angle = geo->GetPHOSAngle(im+1)*TMath::Pi()/180;
101     
102     fBoxSetDigits[im].RefitPlex();
103     TEveTrans& t2 = fBoxSetDigits[im].RefMainTrans();
104     t2.SetupRotation(1, 2, angle );
105     t2.SetPos(center.X(), center.Y(), center.Z());
106     
107     AddElement(&fBoxSetDigits[im]);
108
109
110   }
111
112 }
113
114 void AliHLTEvePhos::AddDigits(UShort_t fX, UShort_t fZ, Int_t module, Float_t energy) {
115   //See header file for documentation
116   Float_t x = (fX - 32)* 2.2;
117   Float_t z = (fZ - 28) * 2.2;
118   fBoxSetDigits[4-module].AddBox(x, 0, z, 2.2, energy*20, 2.2);
119   fBoxSetDigits[4-module].DigitValue(static_cast<Int_t>(energy));
120 }
121
122 void AliHLTEvePhos::ProcessESDCluster(AliESDCaloCluster * cluster) {
123   
124   Float_t pos[3];
125   cluster->GetPosition(pos);
126   TVector3 vec = TVector3(pos);
127   Float_t phi = vec.Phi() *180 / TMath::Pi();
128   if(phi < 0) phi += 360;
129
130   Int_t mid = 0;
131   if(phi > 320) return;
132   else if(phi > 300) mid = 4;
133   else if(phi > 280) mid = 3;
134   else if(phi > 260) mid = 2;
135   else return;
136   
137   Int_t nCells = cluster->GetNCells();
138   AddClusters(pos, mid, cluster->E(), nCells);
139
140 }
141
142 ///____________________________________________________________________________________
143 void AliHLTEvePhos::AddClusters(Float_t * pos, Int_t module, Float_t energy) {
144
145   TVector3 localVector;
146   TVector3 globalVector(pos);
147
148   fGeoUtils->Global2Local(localVector, globalVector, 5-module);
149
150  //See header file for documentation
151   fBoxSetClusters[4-module].AddBox(localVector.X(), 0, localVector.Z(), 2.2, energy*40, 2.2 );
152   fBoxSetClusters[4-module].DigitValue(static_cast<Int_t>(energy*10));
153 }
154
155
156 ///_____________________________________________________________________________
157 void AliHLTEvePhos::AddClusters(Float_t * pos, Int_t module, Float_t energy, Int_t nCells) {
158
159   TVector3 localVector;
160   TVector3 globalVector(pos);
161
162   fGeoUtils->Global2Local(localVector, globalVector, 5-module);
163
164   Float_t cf = 2.2*TMath::Sqrt(nCells);
165  //See header file for documentation
166   fBoxSetClusters[4-module].AddBox(localVector.X(), 0, localVector.Z(), cf, energy*40, cf );
167   fBoxSetClusters[4-module].DigitValue(static_cast<Int_t>(energy*10));
168 }
169