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 AliHLTPHOSMatchedclustershistoProducer
19 * @author Albin Gaignette
21 * @brief Base Class for the Calo Matched track histograms
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 "AliHLTCaloHistoMatchedTracks.h"
31 #include "AliESDCaloCluster.h"
32 #include "AliHLTCaloClusterDataStruct.h"
33 #include "TObjArray.h"
36 #include "TObjArray.h"
37 #include "TRefArray.h"
40 AliHLTCaloHistoMatchedTracks::AliHLTCaloHistoMatchedTracks(TString det) :
41 fHistMatchDistance(NULL),
43 fHistMatchedEnergy(NULL),
44 fHistUnMatchedEnergy(NULL)
47 fHistMatchDistance = new TH1F( Form("%s fHistMatchDistance", det.Data()), Form("%s Track - Cluster residuals (cm)", det.Data()), 50, 0, 50);
48 fHistMatchDistance->GetXaxis()->SetTitle("Distance (cm)");
49 fHistMatchDistance->GetYaxis()->SetTitle("Count");
50 fHistMatchDistance->SetMarkerStyle(21);
51 fHistArray->AddLast(fHistMatchDistance);
53 fHistMatchedEnergy = new TH1F( Form("%s fHistMatchedEnergy", det.Data()), Form("%s Energy distribution of clusters with matching tracks", det.Data()), 5000, 0, 100);
54 fHistMatchedEnergy->GetXaxis()->SetTitle("Cluster Energy (GeV)");
55 fHistMatchedEnergy->GetYaxis()->SetTitle("Number of clusters");
56 fHistMatchedEnergy->SetMarkerStyle(21);
57 fHistArray->AddLast(fHistMatchedEnergy);
59 fHistUnMatchedEnergy = new TH1F( Form("%s fHistUnMatchedEnergy", det.Data()), Form("%s Energy distribution of clusters with no matching track", det.Data()), 5000, 0, 100);
60 fHistUnMatchedEnergy->GetXaxis()->SetTitle("Cluster Energy (GeV)");
61 fHistUnMatchedEnergy->GetYaxis()->SetTitle("Number of clusters");
62 fHistUnMatchedEnergy->SetMarkerStyle(21);
63 fHistArray->AddLast(fHistUnMatchedEnergy);
66 fHistDxyDz = new TH2F( Form("%s fHist dXY dZ", det.Data()), Form("%s dXY - dZ distribution of track - cluster residuals", det.Data()), 50, 0, 50, 50, 0, 50);
67 fHistDxyDz->GetXaxis()->SetTitle("sqrt(dx^2 + dy^2) (cm)");
68 fHistDxyDz->GetYaxis()->SetTitle("dz (cm)");
69 //fHistDxyDz->SetMarkerStyle(21);
70 fHistArray->AddLast(fHistDxyDz);
75 AliHLTCaloHistoMatchedTracks::~AliHLTCaloHistoMatchedTracks()
78 if(fHistMatchDistance)
79 delete fHistMatchDistance;
80 fHistMatchDistance = NULL;
82 if(fHistMatchedEnergy)
83 delete fHistMatchedEnergy;
84 fHistMatchedEnergy = NULL;
86 if(fHistUnMatchedEnergy)
87 delete fHistUnMatchedEnergy;
88 fHistUnMatchedEnergy = NULL;
97 Int_t AliHLTCaloHistoMatchedTracks::FillHistograms(Int_t nc, TRefArray * clusterArray) {
98 //See header file for documentation
99 for(int ic = 0; ic < nc; ic++) {
100 AliESDCaloCluster * cluster = static_cast<AliESDCaloCluster*>(clusterArray->At(ic));
101 return FillMatchedTracks(cluster);
106 Int_t AliHLTCaloHistoMatchedTracks::FillHistograms(Int_t nc, vector<AliHLTCaloClusterDataStruct*> &cVec) {
107 for(int ic = 0; ic < nc; ic++) {
108 AliHLTCaloClusterDataStruct * cluster = cVec.at(ic);
109 return FillMatchedTracks(cluster);
115 Int_t AliHLTCaloHistoMatchedTracks::FillMatchedTracks(T* cluster){
116 // HLTInfo("Filling track-matching histograms");
118 if(cluster->GetNTracksMatched() > 0) {
119 fHistMatchedEnergy->Fill(cluster->E());
120 fHistMatchDistance->Fill(cluster->GetEmcCpvDistance());
121 fHistDxyDz->Fill(cluster->GetTrackDx(), cluster->GetTrackDz());
123 fHistUnMatchedEnergy->Fill(cluster->E());