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 AliHLTPHOSPhysicsAnalyzerSpectrum.cxx
18 * @author Oystein Djuvsland
20 * @brief Invariant mass spectrum from 2 gammas */
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 "AliHLTPHOSPhysicsAnalyzerSpectrum.h"
29 #include "AliHLTPHOSRecPointContainerStruct.h"
30 #include "AliHLTPHOSRecPointDataStruct.h"
36 ClassImp(AliHLTPHOSPhysicsAnalyzerSpectrum);
40 AliHLTPHOSPhysicsAnalyzerSpectrum::AliHLTPHOSPhysicsAnalyzerSpectrum():AliHLTPHOSPhysicsAnalyzer(), fPos0Ptr(0), fPos1Ptr(0), fThresholdPtr(0), fEnergyPtr(0)
43 //See header file for documentation
44 fEnergyPtr = new Float_t[2];
45 fPos0Ptr = new Float_t[3];
46 fPos1Ptr = new Float_t[3];
47 fThresholdPtr = new Float_t[2];
53 AliHLTPHOSPhysicsAnalyzerSpectrum::AliHLTPHOSPhysicsAnalyzerSpectrum(const AliHLTPHOSPhysicsAnalyzerSpectrum &):AliHLTPHOSPhysicsAnalyzer(), fPos0Ptr(0), fPos1Ptr(0), fThresholdPtr(0), fEnergyPtr(0)
55 //Copy constructor not implemented
56 //See header file for documentation
59 AliHLTPHOSPhysicsAnalyzerSpectrum::~AliHLTPHOSPhysicsAnalyzerSpectrum()
62 //See header file for documentation
63 if(fRecPointsPtr) fRecPointsPtr = 0;
65 if(fRootHistPtr) fRootHistPtr = 0;
69 delete [] fThresholdPtr;
90 AliHLTPHOSPhysicsAnalyzerSpectrum::Analyze(AliHLTPHOSRecPointContainerStruct* recPointsArrayPtr, Int_t nRecPoints)
92 //Analyzing a set of recPoints
93 //See header file for documentation
94 Float_t cosOpeningAngle = 0;
96 AliHLTPHOSRecPointDataStruct* firstRecPointPtr;
97 AliHLTPHOSRecPointDataStruct* secondRecPointPtr;
101 for(Int_t i = 0; i < nRecPoints-1; i++)
103 firstRecPointPtr = &(recPointsArrayPtr->fRecPointArray[i]);
104 fEnergyPtr[0] = firstRecPointPtr->fAmp;
105 if(fEnergyPtr[0] > fThresholdPtr[0])
108 for(Int_t j = i+1; j < nRecPoints; j++)
110 secondRecPointPtr = &(recPointsArrayPtr->fRecPointArray[j]);
111 fEnergyPtr[1] = secondRecPointPtr->fAmp;
112 if(fEnergyPtr[1] > fThresholdPtr[1])
114 GlobalPosition(firstRecPointPtr, fPos0Ptr);
115 GlobalPosition(secondRecPointPtr, fPos1Ptr);
117 cosOpeningAngle = (fPos0Ptr[0]*fPos1Ptr[0] + fPos0Ptr[1]*fPos1Ptr[1] + fPos0Ptr[2]*fPos1Ptr[2])/
118 (sqrt(fPos0Ptr[0]*fPos0Ptr[0] + fPos0Ptr[1]*fPos0Ptr[1] + fPos0Ptr[2]*fPos0Ptr[2])*
119 sqrt(fPos1Ptr[0]*fPos1Ptr[0] + fPos1Ptr[1]*fPos1Ptr[1] + fPos1Ptr[2]*fPos1Ptr[2]));
121 fRootHistPtr->Fill(sqrt(2*fEnergyPtr[0]*fEnergyPtr[1]*(1 - cosOpeningAngle)));
134 AliHLTPHOSPhysicsAnalyzerSpectrum::EvalDistance()
136 //Evaluate the distance between the two recPoints
137 //See header file for documentation
138 if(fPos0Ptr && fPos1Ptr)
139 return sqrt(pow(fPos1Ptr[0]-fPos0Ptr[0],2) + pow(fPos1Ptr[1]-fPos0Ptr[1],2) + pow(fPos1Ptr[2]-fPos0Ptr[2],2));
145 AliHLTPHOSPhysicsAnalyzerSpectrum::SetThreshold(Float_t photonEnergy0, Float_t photonEnergy1)
147 //Setting the cut thresholds
148 //See header file for documentation
149 fThresholdPtr[0] = photonEnergy0;
151 fThresholdPtr[1] = photonEnergy1;