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 AliHLTPHOSHistoProdClusterEnergy
19 * @author Albin Gaignette & Svein Lindal
21 * @brief Produces histograms of cluster energy distributions
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 "AliHLTPHOSHistoProdClusterEnergy.h"
31 //#include "AliESDCaloCluster.h"
34 #include "AliHLTCaloClusterDataStruct.h"
35 #include "AliHLTCaloClusterReader.h"
36 #include "TObjArray.h"
37 //#include "TClonesArray.h"
42 AliHLTPHOSHistoProdClusterEnergy::AliHLTPHOSHistoProdClusterEnergy() :
44 fHistClusterEnergy(NULL),
45 fHistClusterEnergyVsNCells(NULL),
48 // See header file for documentation
49 fHistArrayPtr = new TObjArray;
50 fClusterReader = new AliHLTCaloClusterReader();
52 fHistClusterEnergy = new TH1F("fHistClusterEnergy", "Distribution of total energy in clusters", 200, 0, 1);
53 fHistClusterEnergy->GetXaxis()->SetTitle("E GeV");
54 fHistClusterEnergy->GetYaxis()->SetTitle("Number of counts");
55 fHistClusterEnergy->SetMarkerStyle(21);
56 fHistArrayPtr->AddLast(fHistClusterEnergy);
58 fHistClusterEnergyVsNCells = new TH2F("fHistClusterEnergyVsNCells", "Distribution of Energy vs Number of Cells in cluster", 200, 0, 200, 50, 0 , 50);
59 fHistClusterEnergyVsNCells->GetXaxis()->SetTitle("Energy in cluster (GeV)");
60 fHistClusterEnergyVsNCells->GetYaxis()->SetTitle("Number of Cells in cluster");
61 fHistClusterEnergyVsNCells->SetMarkerStyle(21);
62 fHistArrayPtr->AddLast(fHistClusterEnergyVsNCells);
67 AliHLTPHOSHistoProdClusterEnergy::~AliHLTPHOSHistoProdClusterEnergy()
69 if(fHistClusterEnergy){
70 delete fHistClusterEnergy;
71 fHistClusterEnergy = 0;
75 TObjArray* AliHLTPHOSHistoProdClusterEnergy::GetHistograms()
77 // See header file for documentation
82 Int_t AliHLTPHOSHistoProdClusterEnergy::DoEvent(AliHLTCaloClusterHeaderStruct* cHeader) {
84 fClusterReader->SetMemory(cHeader);
86 int ncls = cHeader->fNClusters;
88 Float_t cEnergy[ncls];
90 AliHLTCaloClusterDataStruct* cluster;
92 while ( ( cluster = fClusterReader->NextCluster() ) ) {
94 cPos[icls] = cluster->fGlobalPos;
95 cEnergy[icls] = cluster->fEnergy;
100 for(Int_t ipho = 0; ipho<(ncls-1); ipho++) {
101 for(Int_t jpho = ipho+1 ; jpho<ncls ; jpho++) {
102 // Calcul of the theta angle between two photons
103 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));
105 // Calcul of the mass m of the pion
106 Double_t m =(TMath::Sqrt(2 * cEnergy[ipho]* cEnergy[jpho]*(1-TMath::Cos(theta))));
108 fHistClusterEnergy->Fill(m);