]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/PHOS/AliHLTPHOSPhysicsAnalyzer.cxx
Effective C++
[u/mrichter/AliRoot.git] / HLT / PHOS / AliHLTPHOSPhysicsAnalyzer.cxx
1 /**************************************************************************
2  * This file is property of and copyright by the ALICE HLT Project        * 
3  * All rights reserved.                                                   *
4  *                                                                        *
5  * Primary Authors: Oystein Djuvsland                                     *
6  *                                                                        *
7  * Permission to use, copy, modify and distribute this software and its   *
8  * documentation strictly for non-commercial purposes is hereby granted   *
9  * without fee, provided that the above copyright notice appears in all   *
10  * copies and that both the copyright notice and this permission notice   *
11  * appear in the supporting documentation. The authors make no claims     *
12  * about the suitability of this software for any purpose. It is          * 
13  * provided "as is" without express or implied warranty.                  *
14  **************************************************************************/
15
16 /** 
17  * @file   AliHLTPHOSPhysicsAnalyzer.cxx
18  * @author Oystein Djuvsland
19  * @date 
20  * @brief  Physics analysis base class  */
21
22 // see header file for class documentation
23 // or
24 // refer to README to build package
25 // or
26 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
27
28 #include "AliHLTPHOSPhysicsAnalyzer.h"
29 #include "TVector3.h"
30 #include "TFile.h"
31 #include "TMath.h"
32 #include "TH1F.h"
33 #include "AliPHOSGeometry.h"
34 #include "Rtypes.h"
35 #include "AliHLTPHOSCommonDefs.h"
36 #include "AliHLTPHOSRecPointDataStruct.h"
37  
38
39 ClassImp(AliHLTPHOSPhysicsAnalyzer);
40
41 AliHLTPHOSPhysicsAnalyzer::AliHLTPHOSPhysicsAnalyzer():
42   fRecPointsPtr(0), 
43   fRootHistPtr(0), 
44   fPHOSRadius(0)
45 {
46   //Constructor
47   //See header file for documentation
48   AliPHOSGeometry *geom=AliPHOSGeometry::GetInstance("noCPV");
49
50   //  fPHOSRadius = geom->GetIPtoCrystalSurface();
51   fPHOSRadius = geom->GetIPtoCrystalSurface();
52
53   for(int i = 0; i < N_MODULES; i++)
54     {
55       fRotParametersCos[i] = cos((geom->GetPHOSAngle(i+1))*2*TMath::Pi()/360);
56       fRotParametersSin[i] = sin((geom->GetPHOSAngle(i+1))*2*TMath::Pi()/360);
57     }
58 }
59 /*
60 AliHLTPHOSPhysicsAnalyzer::AliHLTPHOSPhysicsAnalyzer(const AliHLTPHOSPhysicsAnalyzer &):fClustersPtr(0), fRootHistPtr(0), fPHOSRadius(0)
61
62 {
63   //Cooy constructor
64   //See header file for documentation
65   AliPHOSGeometry *geom=AliPHOSGeometry::GetInstance("noCPV");
66
67   fPHOSRadius = geom->GetIPtoCrystalSurface();
68   
69   for(UInt_t i = 0; i < N_MODULES; i++)
70     {
71       fRotParametersCos[i] = cos((geom->GetPHOSAngle(i+1))*2*TMath::Pi()/360);
72       
73       fRotParametersSin[i] = sin((geom->GetPHOSAngle(i+1))*2*TMath::Pi()/360);
74     }
75
76 }
77 */
78
79 AliHLTPHOSPhysicsAnalyzer::~AliHLTPHOSPhysicsAnalyzer()
80 {
81   //Destructor
82   //See header file for documentation
83   fRecPointsPtr = 0;
84   fRootHistPtr = 0;
85 }
86
87 void
88 AliHLTPHOSPhysicsAnalyzer::LocalPosition(AliHLTPHOSRecPointDataStruct* /*recPointPtr*/, Float_t* /*locPositionPtr*/)
89 {
90   //Get local position for a recPoint
91
92   //  locPositionPtr[0] = recPointPtr->fLocalPositionPtr[0];
93   //locPositionPtr[1] = recPointPtr->fLocalPositionPtr[1];
94
95 }
96
97 void
98 AliHLTPHOSPhysicsAnalyzer::GlobalPosition(AliHLTPHOSRecPointDataStruct* recPointPtr, Float_t* positionPtr)
99 {
100   //Get global position for a recPoint
101   //See header file for documentation
102   Float_t tempPosX = 0;
103  
104   
105   Int_t module = recPointPtr->fModule;
106
107   tempPosX = kCRYSTAL_SIZE*(recPointPtr->fX-N_XCOLUMNS_MOD/2) + kCRYSTAL_SIZE/2;
108
109   positionPtr[0] = tempPosX*fRotParametersSin[module] + fPHOSRadius*fRotParametersCos[module];
110
111   positionPtr[1] = tempPosX*fRotParametersCos[module] - fPHOSRadius*fRotParametersSin[module];
112  
113   positionPtr[2] = kCRYSTAL_SIZE*(recPointPtr->fZ-N_ZROWS_MOD/2) + kCRYSTAL_SIZE/2;
114
115 }
116
117 void
118 AliHLTPHOSPhysicsAnalyzer::GlobalPosition(Float_t* locPositionPtr, Float_t* positionPtr, Int_t module)
119
120   //Get global position from local postion and module number
121   //See header file for documentation
122   positionPtr[0] = kCRYSTAL_SIZE*(locPositionPtr[0]-N_XCOLUMNS_MOD/2)*fRotParametersCos[module] + fPHOSRadius*fRotParametersSin[module];
123
124   positionPtr[1] = kCRYSTAL_SIZE*(locPositionPtr[0]-N_XCOLUMNS_MOD/2)*fRotParametersSin[module] - fPHOSRadius*fRotParametersCos[module];
125   
126   positionPtr[2] = kCRYSTAL_SIZE*(locPositionPtr[1]-N_ZROWS_MOD);
127
128 }
129
130 void
131 AliHLTPHOSPhysicsAnalyzer::WriteHistogram(Char_t* fileName)
132 {
133   //Write the histogram
134   //See header file for documentation
135   TFile *outfile = new TFile(fileName,"recreate");  
136   
137   fRootHistPtr->Write();
138   
139   outfile->Close();
140   
141   delete outfile;
142   outfile = 0;
143
144 }
145
146