1 /**************************************************************************
2 * This file is property of and copyright by the ALICE HLT Project *
3 * All rights reserved. *
5 * Primary Authors: Oystein Djuvsland *
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 * @file AliHLTPHOSPhysicsAnalyzer.cxx
18 * @author Oystein Djuvsland
20 * @brief Physics analysis base class */
22 // see header file for class documentation
24 // refer to README to build package
26 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
28 #include "AliHLTPHOSPhysicsAnalyzer.h"
33 #include "AliPHOSGeometry.h"
35 #include "AliHLTPHOSCommonDefs.h"
36 #include "AliHLTPHOSRecPointDataStruct.h"
39 ClassImp(AliHLTPHOSPhysicsAnalyzer);
41 AliHLTPHOSPhysicsAnalyzer::AliHLTPHOSPhysicsAnalyzer():
47 //See header file for documentation
48 AliPHOSGeometry *geom=AliPHOSGeometry::GetInstance("noCPV");
50 // fPHOSRadius = geom->GetIPtoCrystalSurface();
51 fPHOSRadius = geom->GetIPtoCrystalSurface();
53 for(UInt_t i = 0; i < N_MODULES; i++)
55 fRotParametersCos[i] = cos((geom->GetPHOSAngle(i+1))*2*TMath::Pi()/360);
57 fRotParametersSin[i] = sin((geom->GetPHOSAngle(i+1))*2*TMath::Pi()/360);
61 AliHLTPHOSPhysicsAnalyzer::AliHLTPHOSPhysicsAnalyzer(const AliHLTPHOSPhysicsAnalyzer &):fClustersPtr(0), fRootHistPtr(0), fPHOSRadius(0)
65 //See header file for documentation
66 AliPHOSGeometry *geom=AliPHOSGeometry::GetInstance("noCPV");
68 fPHOSRadius = geom->GetIPtoCrystalSurface();
70 for(UInt_t i = 0; i < N_MODULES; i++)
72 fRotParametersCos[i] = cos((geom->GetPHOSAngle(i+1))*2*TMath::Pi()/360);
74 fRotParametersSin[i] = sin((geom->GetPHOSAngle(i+1))*2*TMath::Pi()/360);
80 AliHLTPHOSPhysicsAnalyzer::~AliHLTPHOSPhysicsAnalyzer()
83 //See header file for documentation
89 AliHLTPHOSPhysicsAnalyzer::LocalPosition(AliHLTPHOSRecPointDataStruct* /*recPointPtr*/, Float_t* /*locPositionPtr*/)
91 //Get local position for a recPoint
93 // locPositionPtr[0] = recPointPtr->fLocalPositionPtr[0];
94 //locPositionPtr[1] = recPointPtr->fLocalPositionPtr[1];
99 AliHLTPHOSPhysicsAnalyzer::GlobalPosition(AliHLTPHOSRecPointDataStruct* recPointPtr, Float_t* positionPtr)
101 //Get global position for a recPoint
102 //See header file for documentation
103 Float_t tempPosX = 0;
106 Int_t module = recPointPtr->fModule;
108 tempPosX = kCRYSTAL_SIZE*(recPointPtr->fX-N_XCOLUMNS_MOD/2) + kCRYSTAL_SIZE/2;
110 positionPtr[0] = tempPosX*fRotParametersSin[module] + fPHOSRadius*fRotParametersCos[module];
112 positionPtr[1] = tempPosX*fRotParametersCos[module] - fPHOSRadius*fRotParametersSin[module];
114 positionPtr[2] = kCRYSTAL_SIZE*(recPointPtr->fZ-N_ZROWS_MOD/2) + kCRYSTAL_SIZE/2;
119 AliHLTPHOSPhysicsAnalyzer::GlobalPosition(Float_t* locPositionPtr, Float_t* positionPtr, Int_t module)
121 //Get global position from local postion and module number
122 //See header file for documentation
123 positionPtr[0] = kCRYSTAL_SIZE*(locPositionPtr[0]-N_XCOLUMNS_MOD/2)*fRotParametersCos[module] + fPHOSRadius*fRotParametersSin[module];
125 positionPtr[1] = kCRYSTAL_SIZE*(locPositionPtr[0]-N_XCOLUMNS_MOD/2)*fRotParametersSin[module] - fPHOSRadius*fRotParametersCos[module];
127 positionPtr[2] = kCRYSTAL_SIZE*(locPositionPtr[1]-N_ZROWS_MOD);
132 AliHLTPHOSPhysicsAnalyzer::WriteHistogram(Char_t* fileName)
134 //Write the histogram
135 //See header file for documentation
136 TFile *outfile = new TFile(fileName,"recreate");
138 fRootHistPtr->Write();