2 /**************************************************************************
3 * This file is property of and copyright by the ALICE HLT Project *
4 * All rights reserved. *
6 * Primary Authors: Albin Gaignette
8 * Permission to use, copy, modify and distribute this software and its *
9 * documentation strictly for non-commercial purposes is hereby granted *
10 * without fee, provided that the above copyright notice appears in all *
11 * copies and that both the copyright notice and this permission notice *
12 * appear in the supporting documentation. The authors make no claims *
13 * about the suitability of this software for any purpose. It is *
14 * provided "as is" without express or implied warranty. *
15 **************************************************************************/
18 * @file AliHLTPHOSHistoProdInvMass
19 * @author Albin Gaignette
21 * @brief Histogram producer for PHOS HLT
24 // see header file for class documentation
26 // refer to README to build package
28 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
30 #include "AliHLTPHOSHistoProdInvMass.h"
31 //#include "AliESDCaloCluster.h"
34 #include "AliHLTCaloClusterDataStruct.h"
35 #include "AliHLTCaloClusterReader.h"
36 #include "TObjArray.h"
37 //#include "TClonesArray.h"
42 AliHLTPHOSHistoProdInvMass::AliHLTPHOSHistoProdInvMass() :
44 fHistTwoClusterInvMass(0),
47 // See header file for documentation
48 fHistArrayPtr = new TObjArray;
49 fClusterReader = new AliHLTCaloClusterReader();
51 fHistTwoClusterInvMass = new TH1F("fHistTwoClusterInvMass", "Invariant mass of two clusters", 200, 0, 1);
52 fHistTwoClusterInvMass->GetXaxis()->SetTitle("m_{#gamma#gamma} GeV");
53 fHistTwoClusterInvMass->GetYaxis()->SetTitle("Number of counts");
54 fHistTwoClusterInvMass->SetMarkerStyle(21);
55 fHistArrayPtr->AddLast(fHistTwoClusterInvMass);
58 AliHLTPHOSHistoProdInvMass::~AliHLTPHOSHistoProdInvMass()
60 if(fHistTwoClusterInvMass)
62 delete fHistTwoClusterInvMass;
63 fHistTwoClusterInvMass = 0;
67 TObjArray* AliHLTPHOSHistoProdInvMass::GetHistograms()
69 // See header file for documentation
74 Int_t AliHLTPHOSHistoProdInvMass::DoEvent(AliHLTCaloClusterHeaderStruct* cHeader) {
76 fClusterReader->SetMemory(cHeader);
78 int ncls = cHeader->fNClusters;
80 Float_t cEnergy[ncls];
82 AliHLTCaloClusterDataStruct* cluster;
84 while ( ( cluster = fClusterReader->NextCluster() ) ) {
86 cPos[icls] = cluster->fGlobalPos;
87 cEnergy[icls] = cluster->fEnergy;
92 for(Int_t ipho = 0; ipho<(ncls-1); ipho++) {
93 for(Int_t jpho = ipho+1 ; jpho<ncls ; jpho++) {
94 // Calcul of the theta angle between two photons
95 Double_t theta = (2* asin(0.5*TMath::Sqrt((cPos[ipho][0]-cPos[jpho][0])*(cPos[ipho][0]-cPos[jpho][0]) +(cPos[ipho][1]-cPos[jpho][1])*(cPos[ipho][1]-cPos[jpho][1]))/460));
97 // Calcul of the mass m of the pion
98 Double_t m =(TMath::Sqrt(2 * cEnergy[ipho]* cEnergy[jpho]*(1-TMath::Cos(theta))));
100 fHistTwoClusterInvMass->Fill(m);