]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/PHOS/AliHLTPHOSPhysicsAnalyzer.cxx
Effective C++
[u/mrichter/AliRoot.git] / HLT / PHOS / AliHLTPHOSPhysicsAnalyzer.cxx
CommitLineData
2410262d 1/**************************************************************************
2374af72 2 * This file is property of and copyright by the ALICE HLT Project *
3 * All rights reserved. *
2410262d 4 * *
2374af72 5 * Primary Authors: Oystein Djuvsland *
2410262d 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 *
2374af72 12 * about the suitability of this software for any purpose. It is *
2410262d 13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
2374af72 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
2410262d 27
28#include "AliHLTPHOSPhysicsAnalyzer.h"
29#include "TVector3.h"
30#include "TFile.h"
31#include "TMath.h"
91b95d47 32#include "TH1F.h"
d6e6cb01 33#include "AliPHOSGeometry.h"
91b95d47 34#include "Rtypes.h"
35#include "AliHLTPHOSCommonDefs.h"
2374af72 36#include "AliHLTPHOSRecPointDataStruct.h"
91b95d47 37
2410262d 38
39ClassImp(AliHLTPHOSPhysicsAnalyzer);
40
25b7f84c 41AliHLTPHOSPhysicsAnalyzer::AliHLTPHOSPhysicsAnalyzer():
42 fRecPointsPtr(0),
43 fRootHistPtr(0),
44 fPHOSRadius(0)
2410262d 45{
91b95d47 46 //Constructor
2374af72 47 //See header file for documentation
2410262d 48 AliPHOSGeometry *geom=AliPHOSGeometry::GetInstance("noCPV");
49
2374af72 50 // fPHOSRadius = geom->GetIPtoCrystalSurface();
25b7f84c 51 fPHOSRadius = geom->GetIPtoCrystalSurface();
2374af72 52
b444d727 53 for(int i = 0; i < N_MODULES; i++)
2410262d 54 {
55 fRotParametersCos[i] = cos((geom->GetPHOSAngle(i+1))*2*TMath::Pi()/360);
2410262d 56 fRotParametersSin[i] = sin((geom->GetPHOSAngle(i+1))*2*TMath::Pi()/360);
57 }
58}
2374af72 59/*
6e709a0d 60AliHLTPHOSPhysicsAnalyzer::AliHLTPHOSPhysicsAnalyzer(const AliHLTPHOSPhysicsAnalyzer &):fClustersPtr(0), fRootHistPtr(0), fPHOSRadius(0)
2410262d 61
62{
91b95d47 63 //Cooy constructor
2374af72 64 //See header file for documentation
2410262d 65 AliPHOSGeometry *geom=AliPHOSGeometry::GetInstance("noCPV");
66
67 fPHOSRadius = geom->GetIPtoCrystalSurface();
68
1804b020 69 for(UInt_t i = 0; i < N_MODULES; i++)
2410262d 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 }
91b95d47 75
2410262d 76}
2374af72 77*/
2410262d 78
79AliHLTPHOSPhysicsAnalyzer::~AliHLTPHOSPhysicsAnalyzer()
80{
91b95d47 81 //Destructor
2374af72 82 //See header file for documentation
83 fRecPointsPtr = 0;
91b95d47 84 fRootHistPtr = 0;
2410262d 85}
86
87void
25b7f84c 88AliHLTPHOSPhysicsAnalyzer::LocalPosition(AliHLTPHOSRecPointDataStruct* /*recPointPtr*/, Float_t* /*locPositionPtr*/)
2410262d 89{
2374af72 90 //Get local position for a recPoint
2410262d 91
2374af72 92 // locPositionPtr[0] = recPointPtr->fLocalPositionPtr[0];
93 //locPositionPtr[1] = recPointPtr->fLocalPositionPtr[1];
2410262d 94
95}
96
97void
2374af72 98AliHLTPHOSPhysicsAnalyzer::GlobalPosition(AliHLTPHOSRecPointDataStruct* recPointPtr, Float_t* positionPtr)
2410262d 99{
2374af72 100 //Get global position for a recPoint
101 //See header file for documentation
2410262d 102 Float_t tempPosX = 0;
25b7f84c 103
104
105 Int_t module = recPointPtr->fModule;
2374af72 106
107 tempPosX = kCRYSTAL_SIZE*(recPointPtr->fX-N_XCOLUMNS_MOD/2) + kCRYSTAL_SIZE/2;
2410262d 108
109 positionPtr[0] = tempPosX*fRotParametersSin[module] + fPHOSRadius*fRotParametersCos[module];
110
111 positionPtr[1] = tempPosX*fRotParametersCos[module] - fPHOSRadius*fRotParametersSin[module];
25b7f84c 112
2374af72 113 positionPtr[2] = kCRYSTAL_SIZE*(recPointPtr->fZ-N_ZROWS_MOD/2) + kCRYSTAL_SIZE/2;
2410262d 114
115}
116
117void
118AliHLTPHOSPhysicsAnalyzer::GlobalPosition(Float_t* locPositionPtr, Float_t* positionPtr, Int_t module)
119{
91b95d47 120 //Get global position from local postion and module number
2374af72 121 //See header file for documentation
25b7f84c 122 positionPtr[0] = kCRYSTAL_SIZE*(locPositionPtr[0]-N_XCOLUMNS_MOD/2)*fRotParametersCos[module] + fPHOSRadius*fRotParametersSin[module];
91b95d47 123
25b7f84c 124 positionPtr[1] = kCRYSTAL_SIZE*(locPositionPtr[0]-N_XCOLUMNS_MOD/2)*fRotParametersSin[module] - fPHOSRadius*fRotParametersCos[module];
2410262d 125
442af5b7 126 positionPtr[2] = kCRYSTAL_SIZE*(locPositionPtr[1]-N_ZROWS_MOD);
2410262d 127
128}
129
130void
131AliHLTPHOSPhysicsAnalyzer::WriteHistogram(Char_t* fileName)
132{
91b95d47 133 //Write the histogram
2374af72 134 //See header file for documentation
2410262d 135 TFile *outfile = new TFile(fileName,"recreate");
136
137 fRootHistPtr->Write();
138
139 outfile->Close();
91b95d47 140
141 delete outfile;
142 outfile = 0;
2410262d 143
144}
145
146