]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/global/physics/AliHLTCaloHistoMatchedTracks.cxx
Merge branch 'histos'
[u/mrichter/AliRoot.git] / HLT / global / physics / AliHLTCaloHistoMatchedTracks.cxx
1 //-*- Mode: C++ -*-
2 /**************************************************************************
3  * This file is property of and copyright by the ALICE HLT Project        * 
4  * All rights reserved.                                                   *
5  *                                                                        *
6  * Primary Authors: Albin Gaignette                                       *
7  *                                                                        *
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  **************************************************************************/
16
17 /** 
18  * @file   AliHLTPHOSMatchedclustershistoProducer
19  * @author Albin Gaignette
20  * @date 
21  * @brief  Base Class for the Calo Matched track histograms
22  */
23
24 // see header file for class documentation
25 // or
26 // refer to README to build package
27 // or
28 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
29
30 #include "AliHLTCaloHistoMatchedTracks.h"
31 #include "AliESDCaloCluster.h"
32 #include "AliHLTCaloClusterDataStruct.h"
33 #include "TObjArray.h"
34 #include "TH1F.h"
35 #include "TH2F.h"
36 #include "TObjArray.h"
37 #include "TRefArray.h"
38 #include "TString.h"
39
40 AliHLTCaloHistoMatchedTracks::AliHLTCaloHistoMatchedTracks(TString det) :
41   fHistMatchDistance(NULL),
42   fHistDxyDz(NULL),
43   fHistMatchedEnergy(NULL),
44   fHistUnMatchedEnergy(NULL)
45 {
46
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);
52
53   fHistMatchedEnergy = new TH1F( Form("%s fHistMatchedEnergy", det.Data()), Form("%s Energy distribution of clusters with matching tracks", det.Data()), 200, 0, 200);
54   fHistMatchedEnergy->GetXaxis()->SetTitle("Cluster Energy (GeV)");
55   fHistMatchedEnergy->GetYaxis()->SetTitle("Number of clusters");
56   fHistMatchedEnergy->SetMarkerStyle(21);
57   fHistArray->AddLast(fHistMatchedEnergy);
58
59   fHistUnMatchedEnergy = new TH1F( Form("%s fHistUnMatchedEnergy", det.Data()), Form("%s Energy distribution of clusters with no matching track", det.Data()), 200, 0, 200);
60   fHistUnMatchedEnergy->GetXaxis()->SetTitle("Cluster Energy (GeV)");
61   fHistUnMatchedEnergy->GetYaxis()->SetTitle("Number of clusters");
62   fHistUnMatchedEnergy->SetMarkerStyle(21);
63   fHistArray->AddLast(fHistUnMatchedEnergy);
64
65
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);
71
72 }
73
74
75 AliHLTCaloHistoMatchedTracks::~AliHLTCaloHistoMatchedTracks()
76 {
77
78   if(fHistMatchDistance)
79     delete fHistMatchDistance;
80   fHistMatchDistance = NULL;
81
82   if(fHistMatchedEnergy) 
83     delete fHistMatchedEnergy;
84   fHistMatchedEnergy = NULL;
85
86   if(fHistUnMatchedEnergy) 
87     delete fHistUnMatchedEnergy;
88   fHistUnMatchedEnergy = NULL;
89
90   if (fHistDxyDz) 
91     delete fHistDxyDz;
92   fHistDxyDz = NULL;
93
94 }
95   
96
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);
102   }
103   return 0;
104 }
105
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);
110   }
111   return 0;
112 }
113
114 template <class T>
115 Int_t AliHLTCaloHistoMatchedTracks::FillMatchedTracks(T* cluster){
116   // HLTInfo("Filling track-matching histograms");
117
118   if(cluster->GetNTracksMatched() > 0) {
119     fHistMatchedEnergy->Fill(cluster->E());
120     fHistMatchDistance->Fill(cluster->GetEmcCpvDistance());
121     fHistDxyDz->Fill(cluster->GetTrackDx(), cluster->GetTrackDz());
122   } else {
123     fHistUnMatchedEnergy->Fill(cluster->E());
124   }
125   
126   return 0;
127 }
128