]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/EVE/AliHLTEveEmcal.cxx
Modifiactions for running Event Mixing on the analysis train
[u/mrichter/AliRoot.git] / HLT / EVE / AliHLTEveEmcal.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  EMCAL class for the HLT EVE display
20 // Author:  Svein Lindal <slindal@fys.uio.no>
21
22 #include "AliHLTEveEmcal.h"
23 #include "AliHLTHOMERBlockDesc.h"
24 #include "TCanvas.h"
25 #include "AliHLTEveBase.h"
26 #include "TEveBoxSet.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 #include "TGeoNode.h"
35 //#include "AliEMCALGeoUtils.h"
36 #include "AliEMCALGeometry.h"
37 #include "TGeoManager.h"
38
39 #include "TEveGeoShapeExtract.h"
40 #include "TEveGeoNode.h"
41
42 ClassImp(AliHLTEveEmcal)
43
44 AliHLTEveEmcal::AliHLTEveEmcal() : 
45 AliHLTEveCalo(12, "EMCAL"),
46 fGeoUtils(NULL)
47 {
48   //Constructor
49 //  fGeoUtils = new AliEMCALGeoUtils("EMCAL_COMPLETE","EMCAL");
50   fGeoUtils = AliEMCALGeometry::GetInstance("EMCAL_COMPLETEV1");
51   //fGeoUtils = new AliEMCALGeometry("EMCAL_COMPLETEV1","EMCAL");
52   CreateElementList();
53
54 }
55
56
57 AliHLTEveEmcal::~AliHLTEveEmcal()
58 {
59   //Destructor, not implemented
60 }
61
62 void AliHLTEveEmcal::CreateElementList() {
63   
64   TGeoNode * gEMCALNode = gGeoManager->GetTopVolume()->FindNode("XEN1_1");
65   
66   //gStyle->SetPalette(1, 0);
67   TEveRGBAPalette* pal = new TEveRGBAPalette(0, 512);
68   pal->SetLimits(0, 15);
69   
70   fBoxSetDigits = new TEveBoxSet[fNModules];
71   fBoxSetClusters = new TEveBoxSet[fNModules];
72   
73   for (Int_t sm=0; sm<fNModules; ++sm) {
74     
75     //Digits box set
76     fBoxSetDigits[sm].SetTitle(Form("Digits Module %d", sm));
77     fBoxSetDigits[sm].SetName(Form("Digits Module %d", sm));
78     fBoxSetDigits[sm].SetOwnIds(kTRUE);
79     
80     fBoxSetDigits[sm].Reset(TEveBoxSet::kBT_AABox, kFALSE, 64);
81     fBoxSetDigits[sm].RefMainTrans().SetFrom(*gEMCALNode->GetDaughter(sm)->GetMatrix());
82     fBoxSetDigits[sm].SetPalette(pal);
83     
84     AddElement(&fBoxSetDigits[sm]);
85  
86     //Clusters
87     fBoxSetClusters[sm].SetTitle(Form("Clusters Module %d", sm));
88     fBoxSetClusters[sm].SetName(Form("Clusters Module %d", sm));
89     fBoxSetClusters[sm].SetOwnIds(kTRUE);
90     
91     fBoxSetClusters[sm].Reset(TEveBoxSet::kBT_AABox, kFALSE, 64);
92     fBoxSetClusters[sm].RefMainTrans().SetFrom(*gEMCALNode->GetDaughter(sm)->GetMatrix());
93     fBoxSetClusters[sm].SetPalette(pal);
94     
95     AddElement(&fBoxSetClusters[sm]);
96
97
98   }
99 }
100
101 void AliHLTEveEmcal::AddClusters(Float_t * pos, Int_t module, Float_t energy) {
102   //See header file for documentation
103
104   TVector3 vec(pos);
105   Int_t absId = -1;
106   fGeoUtils->GetAbsCellIdFromEtaPhi(vec.Eta(), vec.Phi(), absId);
107   
108   TVector3 localVec;
109   fGeoUtils->RelPosCellInSModule(absId, localVec);
110   fBoxSetClusters[module].AddBox(15, localVec[0],  localVec[2], energy, 6.0, 6.0);
111   fBoxSetClusters[module].DigitValue(static_cast<Int_t>(energy));
112
113   //cout << "Cluster " << pos[0] << " " << pos[1] << " " << pos[2] << endl;
114
115
116 }
117
118 void AliHLTEveEmcal::AddDigits(UShort_t fX, UShort_t fZ, Int_t module, Float_t energy) {
119   //See header file for documentation
120   //Float_t x = (fX - 24)* 6.0;         
121   //Float_t z = (fZ - 48) * 6.0;
122         
123   Int_t absid = fGeoUtils->GetAbsCellIdFromCellIndexes(module, fX, fZ);
124   Double_t posX, posY, posZ;
125   if(fGeoUtils->RelPosCellInSModule(absid, posX, posY, posZ)) {
126     
127     //cout << "digits " << posX << "  " << posY << "  " << posZ << endl;
128     fBoxSetDigits[module].AddBox(15, posY, posZ, energy*10, 6.0, 6.0);
129
130     fBoxSetDigits[module].DigitValue(static_cast<Int_t>(energy));
131   } else  {
132     cout <<"AliHLTEveEmcal::AddClusters:  fail"<<endl;
133   }
134 }