]>
Commit | Line | Data |
---|---|---|
9f616d61 | 1 | /************************************************************************** |
2 | * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
3 | * * | |
4 | * Author: The ALICE Off-line Project. * | |
5 | * Contributors are mentioned in the code where appropriate. * | |
6 | * * | |
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 | **************************************************************************/ | |
9f616d61 | 15 | //_________________________________________________________________________ |
16 | // Cheking PHOSHistos procedure of PHOS | |
17 | //*-- Author : Gines MARTINEZ SUBATECH january 2000 | |
18 | ////////////////////////////////////////////////////////////////////////////// | |
19 | ||
20 | // --- ROOT system --- | |
9f616d61 | 21 | #include "TCanvas.h" |
22 | #include "TFile.h" | |
23 | #include "TH1.h" | |
24 | #include "TPad.h" | |
25 | #include "TTree.h" | |
26 | ||
27 | // --- Standard library --- | |
28 | ||
29 | #include <iostream> | |
30 | #include <cstdio> | |
31 | ||
32 | ||
33 | // --- AliRoot header files --- | |
34 | #include "AliRun.h" | |
35 | #include "TFile.h" | |
36 | #include "AliPHOSGeometry.h" | |
37 | #include "AliPHOSv0.h" | |
38 | #include "AliPHOSDigit.h" | |
39 | #include "AliPHOSRecPoint.h" | |
40 | #include "AliPHOSEmcRecPoint.h" | |
41 | #include "AliPHOSPpsdRecPoint.h" | |
42 | #include "AliPHOSClusterizerv1.h" | |
43 | #include "AliPHOSReconstructioner.h" | |
44 | #include "AliPHOSTrackSegment.h" | |
45 | #include "AliPHOSTrackSegmentMakerv1.h" | |
26d4b141 | 46 | #include "AliPHOSPIDv1.h" |
9f616d61 | 47 | #include "PHOSHistos.h" |
48 | ||
49 | ||
50 | void PHOSHistos (Text_t* infile, Int_t nevent, Int_t Module) | |
51 | { | |
52 | //========== Opening galice.root file | |
53 | TFile * file = new TFile(infile); | |
54 | //========== Get AliRun object from file | |
55 | gAlice = (AliRun*) file->Get("gAlice");//=========== Gets the PHOS object and associated geometry from the file | |
6ad0bfa0 | 56 | |
9f616d61 | 57 | AliPHOSv0 * PHOS = (AliPHOSv0 *)gAlice->GetDetector("PHOS"); |
58 | AliPHOSGeometry * Geom = AliPHOSGeometry::GetInstance(PHOS->GetGeometry()->GetName(),PHOS->GetGeometry()->GetTitle()); | |
9f616d61 | 59 | //========== Creates the track segment maker |
6ad0bfa0 | 60 | AliPHOSTrackSegmentMakerv1 * tracksegmentmaker = new AliPHOSTrackSegmentMakerv1() ; |
26d4b141 | 61 | //========== Creates the particle identifier |
62 | AliPHOSPIDv1 * particleidentifier = new AliPHOSPIDv1 ; | |
908558fc | 63 | cout << "AnalyzeOneEvent > using particle identifier " << particleidentifier->GetName() << endl ; |
9f616d61 | 64 | |
6ad0bfa0 | 65 | TH1F * hEmcDigit = new TH1F("hEmcDigit","hEmcDigit",1000,0.,5.); |
9f616d61 | 66 | TH1F * hVetoDigit = new TH1F("hVetoDigit","hVetoDigit",1000,0.,3.e-5); |
67 | TH1F * hConvertorDigit = new TH1F("hConvertorDigit","hConvertorDigit",1000,0.,3.e-5); | |
6ad0bfa0 | 68 | TH1F * hEmcCluster = new TH1F("hEmcCluster","hEmcCluster",1000,-5.,5.); |
9f616d61 | 69 | TH1F * hVetoCluster = new TH1F("hVetoCluster","hVetoCluster",1000,0.,3.e-5); |
70 | TH1F * hConvertorCluster = new TH1F("hConvertorCluster","hConvertorCluster",1000,0.,3.e-5); | |
6ad0bfa0 | 71 | TH2F * hConvertorEmc = new TH2F("hConvertorEmc","hConvertorEmc",100,2.,3., 100, 0., 1.e-5); |
72 | ||
9f616d61 | 73 | AliPHOSDigit * digit ; |
74 | ||
75 | //========== Loop on events | |
76 | Int_t ievent; | |
77 | for(ievent=0;ievent<nevent; ievent++) | |
6ad0bfa0 | 78 | { |
79 | //========== Creates the Clusterizer | |
80 | AliPHOSClusterizerv1 * clusterizer = new AliPHOSClusterizerv1() ; | |
81 | clusterizer->SetEmcEnergyThreshold(0.01) ; | |
82 | clusterizer->SetEmcClusteringThreshold(0.1) ; | |
83 | clusterizer->SetPpsdEnergyThreshold(0.00000005) ; | |
84 | clusterizer->SetPpsdClusteringThreshold(0.00000005) ; | |
85 | clusterizer->SetLocalMaxCut(0.03) ; | |
86 | clusterizer->SetCalibrationParameters(0., 0.00000001) ; | |
87 | ||
88 | //========== Creates the Reconstructioner | |
26d4b141 | 89 | AliPHOSReconstructioner * Reconstructioner = new AliPHOSReconstructioner(clusterizer, tracksegmentmaker, particleidentifier) ; |
6ad0bfa0 | 90 | |
91 | cout << "Event " << ievent <<endl; | |
9f616d61 | 92 | |
93 | Int_t RelId[4] ; | |
94 | //=========== Connects the various Tree's for evt | |
95 | gAlice->GetEvent(ievent); | |
96 | //=========== Gets the Digit TTree | |
97 | gAlice->TreeD()->GetEvent(0) ; | |
98 | //=========== Gets the number of entries in the Digits array | |
99 | // Int_t nId = PHOS->Digits()->GetEntries(); | |
100 | TIter next(PHOS->Digits()) ; | |
101 | Float_t Etot=0 ; | |
102 | Int_t nVeto=0 ; | |
103 | Int_t nConvertor=0 ; | |
6ad0bfa0 | 104 | |
9f616d61 | 105 | while( ( digit = (AliPHOSDigit *)next() ) ) |
106 | { | |
6ad0bfa0 | 107 | Etot+=clusterizer->Calibrate(digit->GetAmp()) ; |
9f616d61 | 108 | Geom->AbsToRelNumbering(digit->GetId(), RelId) ; |
109 | ||
6ad0bfa0 | 110 | if (clusterizer->IsInEmc(digit)) |
111 | { hEmcDigit->Fill(clusterizer->Calibrate(digit->GetAmp())) ; } | |
9f616d61 | 112 | else |
113 | { | |
6ad0bfa0 | 114 | if (RelId[1]==9) {nVeto++; hVetoDigit->Fill(clusterizer->Calibrate(digit->GetAmp()));} |
115 | if (RelId[1]==25) {nConvertor++; hConvertorDigit->Fill(clusterizer->Calibrate(digit->GetAmp()));} | |
9f616d61 | 116 | } |
117 | } | |
6ad0bfa0 | 118 | |
119 | PHOS->Reconstruction(Reconstructioner); | |
120 | ||
121 | //=========== Cluster in Module | |
122 | TClonesArray * EmcRP = PHOS->EmcClusters() ; | |
123 | TIter nextemc(EmcRP) ; | |
124 | AliPHOSEmcRecPoint * emc ; | |
125 | Float_t Energy; | |
126 | while((emc = (AliPHOSEmcRecPoint *)nextemc())) | |
127 | { | |
128 | if ( emc->GetPHOSMod() == Module ) | |
129 | { | |
130 | Energy = emc->GetTotalEnergy() ; | |
131 | hEmcCluster->Fill(Energy); | |
132 | printf("Energy of the EMC cluster is %f \n",Energy); | |
133 | TClonesArray * PpsdRP = PHOS->PpsdClusters() ; | |
134 | TIter nextPpsd(PpsdRP) ; | |
135 | AliPHOSPpsdRecPoint * Ppsd ; | |
136 | Float_t Energy2; | |
137 | while((Ppsd = (AliPHOSPpsdRecPoint *)nextPpsd())) | |
138 | { | |
139 | if ( Ppsd->GetPHOSMod() == Module ) | |
140 | { | |
141 | Energy2 = Ppsd->GetTotalEnergy() ; | |
142 | ||
143 | if (!Ppsd->GetUp()) hConvertorEmc->Fill(Energy,Energy2) ; | |
144 | } | |
145 | } | |
146 | ||
147 | } | |
148 | } | |
149 | ||
150 | //=========== Cluster in Module PPSD Down | |
151 | TClonesArray * PpsdRP = PHOS->PpsdClusters() ; | |
152 | TIter nextPpsd(PpsdRP) ; | |
153 | AliPHOSPpsdRecPoint * Ppsd ; | |
154 | while((Ppsd = (AliPHOSPpsdRecPoint *)nextPpsd())) | |
155 | { | |
156 | if ( Ppsd->GetPHOSMod() == Module ) | |
157 | { | |
158 | Energy = Ppsd->GetTotalEnergy() ; | |
159 | ||
160 | if (!Ppsd->GetUp()) hConvertorCluster->Fill(Energy) ; | |
161 | if (Ppsd->GetUp()) hVetoCluster->Fill(Energy) ; | |
162 | ||
163 | } | |
164 | } | |
9f616d61 | 165 | } |
6ad0bfa0 | 166 | |
9f616d61 | 167 | TCanvas * cVetoDigit = new TCanvas("VetoDigit","VetoDigit"); |
168 | hVetoDigit->Draw(); | |
169 | TCanvas * cConvertorDigit = new TCanvas("ConvertorDigit","ConvertorDigit"); | |
170 | hConvertorDigit->Draw(); | |
171 | TCanvas * cEmcDigit = new TCanvas("EmcDigit","EmcDigit"); | |
172 | hEmcDigit->Draw(); | |
6ad0bfa0 | 173 | TCanvas * cVetoCluster = new TCanvas("VetoCluster","VetoCluster"); |
174 | hVetoCluster->Draw(); | |
175 | TCanvas * cConvertorCluster = new TCanvas("ConvertorCluster","ConvertorCluster"); | |
176 | hConvertorCluster->Draw(); | |
177 | TCanvas * cEmcCluster = new TCanvas("EmcCluster","EmcCluster"); | |
178 | hEmcCluster->Draw(); | |
179 | TCanvas * cConvertorEmc = new TCanvas("ConvertorEmc","ConvertorEmc"); | |
180 | hConvertorEmc->Draw("col1"); | |
181 | ||
182 | ||
9f616d61 | 183 | } |
184 | ||
185 |