2 /**************************************************************************
3 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * Author: Ã
\98ystein Djuvsland <oysteind@ift.uib.no> *
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 **************************************************************************/
17 #include "AliHLTPHOSPhysicsAnalyzer.h"
22 #include "AliPHOSGeometry.h"
24 #include "AliHLTPHOSCommonDefs.h"
25 #include "AliHLTPHOSClusterDataStruct.h"
27 #include "AliHLTPHOSConstants.h"
28 using namespace PhosHLTConst;
30 ClassImp(AliHLTPHOSPhysicsAnalyzer);
32 AliHLTPHOSPhysicsAnalyzer::AliHLTPHOSPhysicsAnalyzer():fClustersPtr(NULL)
38 AliPHOSGeometry *geom=AliPHOSGeometry::GetInstance("noCPV");
40 fPHOSRadius = geom->GetIPtoCrystalSurface();
42 for(Int_t i = 0; i < N_MODULES; i++)
44 fRotParametersCos[i] = cos((geom->GetPHOSAngle(i+1))*2*TMath::Pi()/360);
46 fRotParametersSin[i] = sin((geom->GetPHOSAngle(i+1))*2*TMath::Pi()/360);
50 AliHLTPHOSPhysicsAnalyzer::AliHLTPHOSPhysicsAnalyzer(const AliHLTPHOSPhysicsAnalyzer &):fClustersPtr(NULL)
55 AliPHOSGeometry *geom=AliPHOSGeometry::GetInstance("noCPV");
57 fPHOSRadius = geom->GetIPtoCrystalSurface();
59 for(Int_t i = 0; i < N_MODULES; i++)
61 fRotParametersCos[i] = cos((geom->GetPHOSAngle(i+1))*2*TMath::Pi()/360);
63 fRotParametersSin[i] = sin((geom->GetPHOSAngle(i+1))*2*TMath::Pi()/360);
69 AliHLTPHOSPhysicsAnalyzer::~AliHLTPHOSPhysicsAnalyzer()
78 AliHLTPHOSPhysicsAnalyzer::LocalPosition(AliHLTPHOSClusterDataStruct* clusterPtr, Float_t* locPositionPtr)
80 //Get local position for a cluster
82 locPositionPtr[0] = clusterPtr->fLocalPositionPtr[0];
83 locPositionPtr[1] = clusterPtr->fLocalPositionPtr[1];
88 AliHLTPHOSPhysicsAnalyzer::GlobalPosition(AliHLTPHOSClusterDataStruct* clusterPtr, Float_t* positionPtr)
90 //Get global position for a cluster
94 Int_t module = clusterPtr->fPHOSModule;
96 tempPosX = kCRYSTAL_SIZE*(clusterPtr->fLocalPositionPtr[0]-N_COLUMNS_MOD/2) + kCRYSTAL_SIZE/2;
98 positionPtr[0] = tempPosX*fRotParametersSin[module] + fPHOSRadius*fRotParametersCos[module];
100 positionPtr[1] = tempPosX*fRotParametersCos[module] - fPHOSRadius*fRotParametersSin[module];
102 positionPtr[2] = kCRYSTAL_SIZE*(clusterPtr->fLocalPositionPtr[1]-N_ROWS_MOD/2) + kCRYSTAL_SIZE/2;
107 AliHLTPHOSPhysicsAnalyzer::GlobalPosition(Float_t* locPositionPtr, Float_t* positionPtr, Int_t module)
109 //Get global position from local postion and module number
111 positionPtr[0] = kCRYSTAL_SIZE*(locPositionPtr[0]-N_COLUMNS_MOD/2)*fRotParametersCos[module-1] + fPHOSRadius*fRotParametersSin[module-1];
113 positionPtr[1] = kCRYSTAL_SIZE*(locPositionPtr[0]-N_COLUMNS_MOD/2)*fRotParametersSin[module-1] - fPHOSRadius*fRotParametersCos[module-1];
115 positionPtr[2] = kCRYSTAL_SIZE*(locPositionPtr[1]-N_ROWS_MOD);
120 AliHLTPHOSPhysicsAnalyzer::WriteHistogram(Char_t* fileName)
122 //Write the histogram
124 TFile *outfile = new TFile(fileName,"recreate");
126 fRootHistPtr->Write();