1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Authors: Øystein Djuvsland <oysteind@ift.uib.no> *
6 * Permission to use, copy, modify and distribute this software and its *
7 * documentation strictly for non-commercial purposes is hereby granted *
8 * without fee, provided that the above copyright notice appears in all *
9 * copies and that both the copyright notice and this permission notice *
10 * appear in the supporting documentation. The authors make no claims *
11 * about the suitability of this software for any purpose. It is *
12 * provided "as is" without express or implied warranty. *
13 **************************************************************************/
16 #include "AliHLTPHOSPhysicsAnalyzerSpectrum.h"
17 #include "AliHLTPHOSClusterDataStruct.h"
23 ClassImp(AliHLTPHOSPhysicsAnalyzerSpectrum);
27 AliHLTPHOSPhysicsAnalyzerSpectrum::AliHLTPHOSPhysicsAnalyzerSpectrum():AliHLTPHOSPhysicsAnalyzer(), fPos0Ptr(0), fPos1Ptr(0), fThresholdPtr(0), fEnergyPtr(0)
31 fEnergyPtr = new Float_t[2];
32 fPos0Ptr = new Float_t[3];
33 fPos1Ptr = new Float_t[3];
34 fThresholdPtr = new Float_t[2];
40 AliHLTPHOSPhysicsAnalyzerSpectrum::AliHLTPHOSPhysicsAnalyzerSpectrum(const AliHLTPHOSPhysicsAnalyzerSpectrum &):AliHLTPHOSPhysicsAnalyzer(), fPos0Ptr(0), fPos1Ptr(0), fThresholdPtr(0), fEnergyPtr(0)
42 //Copy constructor not implemented
45 AliHLTPHOSPhysicsAnalyzerSpectrum::~AliHLTPHOSPhysicsAnalyzerSpectrum()
49 if(fClustersPtr) fClustersPtr = 0;
51 if(fRootHistPtr) fRootHistPtr = 0;
55 delete [] fThresholdPtr;
77 AliHLTPHOSPhysicsAnalyzerSpectrum::Analyze(AliHLTPHOSClusterDataStruct* clustersPtr[10000], Int_t nClusters)
79 //Analyzing a set of clusters
81 Float_t cosOpeningAngle = 0;
85 for(Int_t i = 0; i < nClusters-1; i++)
88 fEnergyPtr[0] = clustersPtr[i]->fClusterEnergy;
90 if(fEnergyPtr[0] > fThresholdPtr[0])
93 for(Int_t j = i+1; j < nClusters; j++)
96 fEnergyPtr[1] = clustersPtr[j]->fClusterEnergy;
98 if(fEnergyPtr[1] > fThresholdPtr[1])
100 GlobalPosition(clustersPtr[i], fPos0Ptr);
102 GlobalPosition(clustersPtr[j], fPos1Ptr);
104 cosOpeningAngle = (fPos0Ptr[0]*fPos1Ptr[0] + fPos0Ptr[1]*fPos1Ptr[1] + fPos0Ptr[2]*fPos1Ptr[2])/
105 (sqrt(fPos0Ptr[0]*fPos0Ptr[0] + fPos0Ptr[1]*fPos0Ptr[1] + fPos0Ptr[2]*fPos0Ptr[2])*
106 sqrt(fPos1Ptr[0]*fPos1Ptr[0] + fPos1Ptr[1]*fPos1Ptr[1] + fPos1Ptr[2]*fPos1Ptr[2]));
108 fRootHistPtr->Fill(sqrt(2*fEnergyPtr[0]*fEnergyPtr[1]*(1 - cosOpeningAngle)));
125 AliHLTPHOSPhysicsAnalyzerSpectrum::EvalDistance()
127 //Evaluate the distance between the two clusters
129 if(fPos0Ptr && fPos1Ptr)
130 return sqrt(pow(fPos1Ptr[0]-fPos0Ptr[0],2) + pow(fPos1Ptr[1]-fPos0Ptr[1],2) + pow(fPos1Ptr[2]-fPos0Ptr[2],2));
136 AliHLTPHOSPhysicsAnalyzerSpectrum::SetThreshold(Float_t photonEnergy0, Float_t photonEnergy1)
138 //Setting the cut thresholds
140 fThresholdPtr[0] = photonEnergy0;
142 fThresholdPtr[1] = photonEnergy1;