1 <!DOCTYPE HTML PUBLIC "-// IETF/DTD HTML 2.0// EN">
4 <!-- Author: ROOT team (rootdev@hpsalo.cern.ch) -->
6 <!-- Date: Tue Apr 3 16:13:09 2001 -->
9 <title>AliPHOSDigitizer - source file</title>
10 <link rev=made href="mailto:rootdev@root.cern.ch">
11 <meta name="rating" content="General">
12 <meta name="objecttype" content="Manual">
13 <meta name="keywords" content="software development, oo, object oriented, unix, x11, windows, c++, html, rene brun, fons rademakers">
14 <meta name="description" content="ROOT - An Object Oriented Framework For Large Scale Data Analysis.">
16 <body BGCOLOR="#ffffff" LINK="#0000ff" VLINK="#551a8b" ALINK="#ff0000" TEXT="#000000">
17 <a name="TopOfPage"></a>
19 /**************************************************************************
20 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
22 * Author: The ALICE Off-line Project. *
23 * Contributors are mentioned in the code where appropriate. *
25 * Permission to use, copy, modify and distribute this software and its *
26 * documentation strictly for non-commercial purposes is hereby granted *
27 * without fee, provided that the above copyright notice appears in all *
28 * copies and that both the copyright notice and this permission notice *
29 * appear in the supporting documentation. The authors make no claims *
30 * about the suitability of this software for any purpose. It is *
31 * provided "as is" without express or implied warranty. *
32 **************************************************************************/
36 <b>//_________________________________________________________________________</b>
37 <b>//*-- Author : Dmitri Peressounko (SUBATECH & Kurchatov Institute) </b>
38 <b>//////////////////////////////////////////////////////////////////////////////</b>
39 <b>// Class performs digitization of Summable digits (in the PHOS case this is just</b>
40 <b>// sum of contributions of all primary particles into given cell). </b>
41 <b>// In addition it performs mixing of summable digits from different events.</b>
42 <b>// Examples of use:</b>
43 <b>// root[0] <a href=".././AliPHOSDigitizer.html">AliPHOSDigitizer</a> * d = new <a href=".././AliPHOSDigitizer.html">AliPHOSDigitizer</a>() ;</b>
44 <b>// root[1] d->ExecuteTask() </b>
45 <b>// Warning in <TDatabasePDG::TDatabasePDG>: object already instantiated</b>
46 <b>// //Digitizes SDigitis in all events found in file galice.root </b>
47 <b>// //Depending on variable "CONFIG_SPLIT_FILE" reads branches stored in galice.root</b>
48 <b>// //or in PHOS.SDigits.root</b>
49 <b>// root[2] <a href=".././AliPHOSDigitizer.html">AliPHOSDigitizer</a> * d1 = new <a href=".././AliPHOSDigitizer.html">AliPHOSDigitizer</a>("galice1.root") ; </b>
50 <b>// // Will read sdigits from galice1.root</b>
51 <b>// root[3] d1-><a href="#AliPHOSDigitizer:MixWith">MixWith</a>("galice2.root") </b>
52 <b>// Warning in <TDatabasePDG::TDatabasePDG>: object already instantiated</b>
53 <b>// // Reads another portion of sdigits from galice2.root</b>
54 <b>// root[3] d1-><a href="#AliPHOSDigitizer:MixWith">MixWith</a>("galice3.root") </b>
55 <b>// // Reads another portion of sdigits from galice3.root</b>
56 <b>// root[4] d->ExecuteTask("deb timing") </b>
57 <b>// // Reads SDigits from files galice1.root, galice2.root ....</b>
58 <b>// // mixes them and stores produced Digits in file galice1.root </b>
59 <b>// // deb - prints <a href="../ListOfTypes.html#number">number</a> of produced digits</b>
60 <b>// // deb all - prints list of produced digits</b>
61 <b>// // timing - prints time used for digitization</b>
63 <b>// For each event two branches are created in TreeD:</b>
64 <b>// "PHOS" - list of digits</b>
65 <b>// "<a href=".././AliPHOSDigitizer.html">AliPHOSDigitizer</a>" - <a href=".././AliPHOSDigitizer.html">AliPHOSDigitizer</a> with all parameters used in digitization</b>
67 <b>// Note, that one can specify new file name for digits branch, and repeat digitization with</b>
68 <b>// another set of parameters.</b>
70 <b>// --- ROOT system ---</b>
76 #include "TObjString.h"
77 #include "TBenchmark.h"
78 <b>// --- Standard library ---</b>
79 #include <iomanip.h>
81 <b>// --- AliRoot header files ---</b>
84 #include "AliPHOSDigit.h"
85 #include "AliPHOSHit.h"
86 #include "AliPHOSv1.h"
87 #include "AliPHOSDigitizer.h"
88 #include "AliPHOSSDigitizer.h"
89 #include "AliPHOSGeometry.h"
91 ClassImp(AliPHOSDigitizer)
94 <b>//____________________________________________________________________________ </b>
95 <a name="AliPHOSDigitizer:AliPHOSDigitizer"> </a> <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:AliPHOSDigitizer">AliPHOSDigitizer::AliPHOSDigitizer</a>():TTask("<a href=".././AliPHOSDigitizer.html">AliPHOSDigitizer</a>","")
99 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitizer">fSDigitizer</a> = 0 ;
100 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fNinputs">fNinputs</a> = 1 ;
101 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fPinNoise">fPinNoise</a> = 0.01 ;
102 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fEMCDigitThreshold">fEMCDigitThreshold</a> = 0.01 ;
103 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fCPVNoise">fCPVNoise</a> = 0.01;
104 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fCPVDigitThreshold">fCPVDigitThreshold</a> = 0.09 ;
105 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fPPSDNoise">fPPSDNoise</a> = 0.0000001;
106 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fPPSDDigitThreshold">fPPSDDigitThreshold</a> = 0.0000002 ;
107 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fInitialized">fInitialized</a> = kFALSE ;
109 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fHeaderFiles">fHeaderFiles</a> = 0;
110 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitsFiles">fSDigitsFiles</a> = 0;
111 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigits">fSDigits</a> = 0 ;
112 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigits">fDigits</a> = 0;
115 <b>//____________________________________________________________________________ </b>
116 <a name="AliPHOSDigitizer:Init"> </a><a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:Init">AliPHOSDigitizer::Init</a>(){
117 <b>// Mades all memory allocations and defiles, </b>
118 <b>// whether first (default) file will be output file (isOutFile !=0) </b>
120 if(!<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fInitialized">fInitialized</a>){
122 cout << "In Init" << endl ;
124 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fHeaderFiles">fHeaderFiles</a> = new TClonesArray("TObjString",1) ;
125 new((*<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fHeaderFiles">fHeaderFiles</a>)[0]) TObjString("galice.root") ;
127 <b> //Test, if this file already open</b>
129 TFile *file = (TFile*) gROOT->GetFile(((TObjString *) <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fHeaderFiles">fHeaderFiles</a>->At(0))->GetString() ) ;
132 file = new TFile(((TObjString *) <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fHeaderFiles">fHeaderFiles</a>->At(0))->GetString(),"update") ;
133 gAlice = (AliRun *) file->Get("gAlice") ;
136 file = new TFile(((TObjString *) <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fHeaderFiles">fHeaderFiles</a>->At(0))->GetString()) ;
140 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitsFiles">fSDigitsFiles</a> = new TClonesArray("TObjString",1);
141 if(gSystem->Getenv("CONFIG_SPLIT_FILE"))
142 new((*<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitsFiles">fSDigitsFiles</a>)[0]) TObjString("./PHOS.SDigits.root") ;
144 new((*<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitsFiles">fSDigitsFiles</a>)[0]) TObjString("") ;
146 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigits">fSDigits</a> = new TClonesArray("TClonesArray",1) ;
147 new((*<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigits">fSDigits</a>)[0]) TClonesArray("<a href=".././AliPHOSDigit.html">AliPHOSDigit</a>",1000) ;
149 if(gSystem->Getenv("CONFIG_SPLIT_FILE"))
150 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigitsFile">fDigitsFile</a> = "PHOS.Digits.root" ;
152 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigitsFile">fDigitsFile</a> = "" ;
154 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigits">fDigits</a> = new TClonesArray("<a href=".././AliPHOSDigit.html">AliPHOSDigit</a>",200000) ;
156 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fIevent">fIevent</a> = new TArrayI(1) ;
157 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fIevent">fIevent</a>->AddAt(-1,0 ) ;
158 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fIeventMax">fIeventMax</a> = new TArrayI(1) ;
160 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fIeventMax">fIeventMax</a>->AddAt((<a href="../ListOfTypes.html#Int_t">Int_t</a>) gAlice->TreeE()->GetEntries(), 0 );
162 <b> // add Task to //root/Tasks folder</b>
163 TTask * roottasks = (TTask*)gROOT->GetRootFolder()->FindObject("Tasks") ;
164 roottasks->Add(this) ;
166 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fInitialized">fInitialized</a> = kTRUE ;
171 <b>//____________________________________________________________________________ </b>
172 <a name="AliPHOSDigitizer:AliPHOSDigitizer"> </a><a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:AliPHOSDigitizer">AliPHOSDigitizer::AliPHOSDigitizer</a>(const <a href="../ListOfTypes.html#char">char</a> *HeaderFile,const <a href="../ListOfTypes.html#char">char</a> *DigitsFile):TTask("<a href=".././AliPHOSDigitizer.html">AliPHOSDigitizer</a>","")
175 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fHeaderFiles">fHeaderFiles</a> = new TClonesArray("TObjString",1) ;
176 new((*<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fHeaderFiles">fHeaderFiles</a>)[0]) TObjString(HeaderFile) ;
178 <b> // Header file, where result will be stored</b>
179 TFile * file = (TFile*) gROOT->GetFile(((TObjString *) <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fHeaderFiles">fHeaderFiles</a>->At(0))->GetString() ) ;
181 file = new TFile(((TObjString *) <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fHeaderFiles">fHeaderFiles</a>->At(0))->GetString(),"update") ;
182 gAlice = (AliRun *) file->Get("gAlice") ; //If not read yet
187 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitsFiles">fSDigitsFiles</a> = new TClonesArray("TObjString",1); // File name of the SDigits branch
189 new((*<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitsFiles">fSDigitsFiles</a>)[0]) TObjString(DigitsFile) ;
190 <b> //Normally, branch names are modified to be "./xxx", so add this "./" </b>
191 <a href="../ListOfTypes.html#char">char</a> * base = new <a href="../ListOfTypes.html#char">char</a>[strlen(gAlice->GetBaseFile())+2];
192 sprintf(base,"%s/",gAlice->GetBaseFile());
193 if(!strstr(DigitsFile,base) )
194 ((TObjString*) <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitsFiles">fSDigitsFiles</a>->At(0))->GetString().Insert(0,base) ;
198 if(gSystem->Getenv("CONFIG_SPLIT_FILE"))
199 new((*<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitsFiles">fSDigitsFiles</a>)[0]) TObjString("./PHOS.SDigits.root") ;
201 new((*<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitsFiles">fSDigitsFiles</a>)[0]) TObjString("") ;
203 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigits">fSDigits</a> = new TClonesArray("TClonesArray",1) ; // here list of SDigits wil be stored
204 new((*<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigits">fSDigits</a>)[0]) TClonesArray("<a href=".././AliPHOSDigit.html">AliPHOSDigit</a>",1000) ;
206 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigits">fDigits</a> = new TClonesArray("<a href=".././AliPHOSDigit.html">AliPHOSDigit</a>",200000) ;
208 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigitsFile">fDigitsFile</a> = DigitsFile ;
210 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fIevent">fIevent</a> = new TArrayI(1) ;
211 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fIevent">fIevent</a>->AddAt(-1,0 ) ;
212 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fIeventMax">fIeventMax</a> = new TArrayI(1) ;
214 <b> // Get <a href="../ListOfTypes.html#number">number</a> of events to process</b>
215 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fIeventMax">fIeventMax</a>->AddAt((<a href="../ListOfTypes.html#Int_t">Int_t</a>) gAlice->TreeE()->GetEntries(), 0 );
217 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fNinputs">fNinputs</a> = 1 ;
219 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fPinNoise">fPinNoise</a> = 0.01 ;
220 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fEMCDigitThreshold">fEMCDigitThreshold</a> = 0.01 ;
221 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fCPVNoise">fCPVNoise</a> = 0.01;
222 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fCPVDigitThreshold">fCPVDigitThreshold</a> = 0.09 ;
223 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fPPSDNoise">fPPSDNoise</a> = 0.0000001;
224 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fPPSDDigitThreshold">fPPSDDigitThreshold</a> = 0.0000002 ;
226 <b> // add Task to //root/Tasks folder</b>
227 TTask * roottasks = (TTask*)gROOT->GetRootFolder()->FindObject("Tasks") ;
228 roottasks->Add(this) ;
229 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fInitialized">fInitialized</a> = kTRUE ;
233 <b>//____________________________________________________________________________ </b>
234 <a name="AliPHOSDigitizer:~AliPHOSDigitizer"> </a> <a href=".././AliPHOSDigitizer.html">AliPHOSDigitizer</a>::~<a href=".././AliPHOSDigitizer.html">AliPHOSDigitizer</a>()
238 if(<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fHeaderFiles">fHeaderFiles</a>) delete <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fHeaderFiles">fHeaderFiles</a> ;
239 if(<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitsFiles">fSDigitsFiles</a>) delete <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitsFiles">fSDigitsFiles</a> ;
240 if(<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigits">fSDigits</a>) delete <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigits">fSDigits</a> ;
241 if(<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigits">fDigits</a>) delete <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigits">fDigits</a> ;
243 <b>//____________________________________________________________________________</b>
244 <a name="AliPHOSDigitizer:Reset"> </a><a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:Reset">AliPHOSDigitizer::Reset</a>() {
245 <b> //sets current event <a href="../ListOfTypes.html#number">number</a> to the beginning</b>
247 if(!<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fInitialized">fInitialized</a>)
248 <a href="#AliPHOSDigitizer:Init">Init</a>() ;
250 <a href="../ListOfTypes.html#Int_t">Int_t</a> inputs ;
251 for(inputs = 0; inputs < <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fNinputs">fNinputs</a> ;inputs++)
252 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fIevent">fIevent</a>->AddAt(-1, inputs ) ;
255 <b>//____________________________________________________________________________</b>
256 <a name="AliPHOSDigitizer:Combinator"> </a><a href="../ListOfTypes.html#Bool_t">Bool_t</a> <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:Combinator">AliPHOSDigitizer::Combinator</a>() {
258 <b> //Makes all desirable combinations Signal+Background,</b>
259 <b> // returns kFALSE when all combinations are made</b>
260 <b> // May be useful to introduce some options like "One-to-One", "All-to-One" and "All-to-All" ?</b>
262 <b> //realizing "One-to-One" option...</b>
264 if(!<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fInitialized">fInitialized</a>)
265 <a href="#AliPHOSDigitizer:Init">Init</a>() ;
267 <a href="../ListOfTypes.html#Int_t">Int_t</a> inputs ;
268 <a href="../ListOfTypes.html#Bool_t">Bool_t</a> endNotReached = kTRUE ;
270 for(inputs = 0; (inputs < <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fNinputs">fNinputs</a>) && endNotReached ;inputs++){
271 if(<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fIevent">fIevent</a>->At(inputs)+1 < <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fIeventMax">fIeventMax</a>->At(inputs))
272 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fIevent">fIevent</a>->AddAt(<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fIevent">fIevent</a>->At(inputs)+1, inputs ) ;
275 endNotReached = kFALSE ;
276 else //for inputs other than base one start from the beginning
277 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fIevent">fIevent</a>->AddAt(0, inputs ) ;
280 return endNotReached ;
284 <b>//____________________________________________________________________________</b>
285 <a name="AliPHOSDigitizer:Digitize"> </a><a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:Digitize">AliPHOSDigitizer::Digitize</a>(<a href="../ListOfTypes.html#Option_t">Option_t</a> *option) {
287 <b> //Makes the digitization of the collected summable digits</b>
289 if(!<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fInitialized">fInitialized</a>)
290 <a href="#AliPHOSDigitizer:Init">Init</a>() ;
292 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigits">fDigits</a>->Clear() ;
294 <a href=".././AliPHOS.html">AliPHOS</a> * PHOS = (<a href=".././AliPHOS.html">AliPHOS</a> *) gAlice->GetDetector("PHOS") ;
295 <a href=".././AliPHOSGeometry.html">AliPHOSGeometry</a> *geom = <a href=".././AliPHOSGeometry.html#AliPHOSGeometry:GetInstance">AliPHOSGeometry::GetInstance</a>( PHOS->GetGeometry()->GetName(), PHOS->GetGeometry()->GetTitle() );
297 <b> //Making digits with noise, first EMC</b>
298 <a href="../ListOfTypes.html#Int_t">Int_t</a> nEMC = geom->GetNModules()*geom->GetNPhi()*geom->GetNZ();
300 <a href="../ListOfTypes.html#Int_t">Int_t</a> nCPV ;
301 <a href="../ListOfTypes.html#Int_t">Int_t</a> nPPSD ;
302 <a href="../ListOfTypes.html#Int_t">Int_t</a> absID ;
303 TString name = geom->GetName() ;
305 if ( name == "IHEP" || name == "MIXT" )
306 nCPV =nEMC + geom->GetNumberOfCPVPadsZ()*geom->GetNumberOfCPVPadsPhi()*
307 geom->GetNCPVModules()*geom->GetNumberOfCPVLayers() ;
311 if ( name == "GPS2" || name == "MIXT" )
312 nPPSD =nCPV+2*geom->GetNPPSDModules()*geom->GetNumberOfModulesPhi()*geom->GetNumberOfModulesZ()*
313 geom->GetNumberOfPadsPhi()*geom->GetNumberOfPadsZ() ;
318 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigits">fDigits</a>->Expand(nPPSD) ;
321 for(absID = 1; absID <= nEMC; absID++){
322 <a href="../ListOfTypes.html#Float_t">Float_t</a> noise = gRandom->Gaus(0., <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fPinNoise">fPinNoise</a>) ;
323 new((*<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigits">fDigits</a>)[absID-1]) <a href=".././AliPHOSDigit.html">AliPHOSDigit</a>( -1,absID,<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitizer">fSDigitizer</a>-><a href=".././AliPHOSSDigitizer.html#AliPHOSSDigitizer:Digitize">Digitize</a>(noise) ) ;
326 for(absID = nEMC+1; absID <= nCPV; absID++){
327 <a href="../ListOfTypes.html#Float_t">Float_t</a> noise = gRandom->Gaus(0., <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fCPVNoise">fCPVNoise</a>) ;
328 new((*<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigits">fDigits</a>)[absID-1]) <a href=".././AliPHOSDigit.html">AliPHOSDigit</a>( -1,absID,<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitizer">fSDigitizer</a>-><a href=".././AliPHOSSDigitizer.html#AliPHOSSDigitizer:Digitize">Digitize</a>(noise) ) ;
331 for(absID = nCPV+1; absID <= nPPSD; absID++){
332 <a href="../ListOfTypes.html#Float_t">Float_t</a> noise = gRandom->Gaus(0., <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fPPSDNoise">fPPSDNoise</a>) ;
333 new((*<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigits">fDigits</a>)[absID-1]) <a href=".././AliPHOSDigit.html">AliPHOSDigit</a>( -1,absID,<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitizer">fSDigitizer</a>-><a href=".././AliPHOSSDigitizer.html#AliPHOSSDigitizer:Digitize">Digitize</a>(noise) ) ;
337 <b> // Now look throught (unsorted) list of SDigits and add corresponding digits </b>
338 <a href=".././AliPHOSDigit.html">AliPHOSDigit</a> *curSDigit ;
339 <a href=".././AliPHOSDigit.html">AliPHOSDigit</a> *digit ;
341 <a href="../ListOfTypes.html#Int_t">Int_t</a> inputs;
342 for(inputs = 0; inputs< <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fNinputs">fNinputs</a> ; inputs++){ //loop over (possible) merge sources
344 TClonesArray * sdigits= (TClonesArray *)<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigits">fSDigits</a>->At(inputs) ;
345 <a href="../ListOfTypes.html#Int_t">Int_t</a> isdigit ;
347 <a href="../ListOfTypes.html#Int_t">Int_t</a> nSDigits = sdigits->GetEntries() ;
348 for(isdigit=0;isdigit< nSDigits; isdigit++){
349 curSDigit = (<a href=".././AliPHOSDigit.html">AliPHOSDigit</a> *)sdigits->At(isdigit) ;
350 if(inputs) //Shift primaries for non-background sdigits
351 curSDigit->ShiftPrimary(inputs) ;
352 digit = (<a href=".././AliPHOSDigit.html">AliPHOSDigit</a> *)<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigits">fDigits</a>->At(curSDigit->GetId() - 1);
353 *digit = *digit + *curSDigit ;
358 <b> //remove digits below thresholds</b>
359 for(absID = 0; absID < nEMC ; absID++)
360 if(<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitizer">fSDigitizer</a>-><a href=".././AliPHOSSDigitizer.html#AliPHOSSDigitizer:Calibrate">Calibrate</a>(((<a href=".././AliPHOSDigit.html">AliPHOSDigit</a>*)<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigits">fDigits</a>->At(absID))->GetAmp()) < <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fEMCDigitThreshold">fEMCDigitThreshold</a>)
361 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigits">fDigits</a>->RemoveAt(absID) ;
362 for(absID = nEMC; absID < nCPV ; absID++)
363 if(<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitizer">fSDigitizer</a>-><a href=".././AliPHOSSDigitizer.html#AliPHOSSDigitizer:Calibrate">Calibrate</a>(((<a href=".././AliPHOSDigit.html">AliPHOSDigit</a>*)<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigits">fDigits</a>->At(absID))->GetAmp()) < <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fCPVDigitThreshold">fCPVDigitThreshold</a>)
364 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigits">fDigits</a>->RemoveAt(absID) ;
365 for(absID = nCPV; absID < nPPSD ; absID++)
366 if(<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitizer">fSDigitizer</a>-><a href=".././AliPHOSSDigitizer.html#AliPHOSSDigitizer:Calibrate">Calibrate</a>(((<a href=".././AliPHOSDigit.html">AliPHOSDigit</a> *)<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigits">fDigits</a>->At(absID))->GetAmp()) < <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fPPSDDigitThreshold">fPPSDDigitThreshold</a>)
367 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigits">fDigits</a>->RemoveAt(absID) ;
369 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigits">fDigits</a>->Compress() ;
371 <a href="../ListOfTypes.html#Int_t">Int_t</a> ndigits = <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigits">fDigits</a>->GetEntriesFast() ;
373 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigits">fDigits</a>->Expand(ndigits) ;
376 <b> //Set indexes in list of digits</b>
377 <a href="../ListOfTypes.html#Int_t">Int_t</a> i ;
378 for (i = 0 ; i < ndigits ; i++) {
379 <a href=".././AliPHOSDigit.html">AliPHOSDigit</a> * digit = (<a href=".././AliPHOSDigit.html">AliPHOSDigit</a> *) <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigits">fDigits</a>->At(i) ;
380 digit->SetIndexInList(i) ;
383 <b>//____________________________________________________________________________</b>
384 <a name="AliPHOSDigitizer:WriteDigits"> </a><a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:WriteDigits">AliPHOSDigitizer::WriteDigits</a>(){
386 <b> //Made TreeD in the output file if necessary and writes digiths there.</b>
388 gAlice->GetEvent(<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fIevent">fIevent</a>->At(0)) ; // Suitable only for One-To-One mixing
389 gAlice->SetEvent(<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fIevent">fIevent</a>->At(0)) ; // for all-to-all will produce a lot of branches in TreeD
391 cout << "event " <<<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fIevent">fIevent</a>->At(0) << endl ;
393 if(gAlice->TreeD()==0){
394 gAlice->MakeTree("D") ;
395 cout << "MakeTree D" << endl ;
398 cout << "Write " << <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigits">fDigits</a>->GetSize() << " " << <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigits">fDigits</a>->GetEntries() << endl ;
401 <b> //Make (if necessary) branches </b>
402 <b> //First generate file name</b>
404 <a href="../ListOfTypes.html#char">char</a> * file =0;
405 if(!<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigitsFile">fDigitsFile</a>.IsNull())
406 file = (<a href="../ListOfTypes.html#char">char</a>*) <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigitsFile">fDigitsFile</a>.Data() ;
408 if(gSystem->Getenv("CONFIG_SPLIT_FILE")){ //generating file name
409 file = new <a href="../ListOfTypes.html#char">char</a>[30] ;
410 <b> // sprintf(file,"PHOS.SDigits%d.root",ievent) ;</b>
411 sprintf(file,"PHOS.SDigits.root") ;
416 <b> //Second, check, if this branch already exits?</b>
417 TBranch * digitsBranch = 0;
418 TBranch * digitizerBranch = 0;
420 TObjArray * branches = gAlice->TreeD()->GetListOfBranches() ;
421 <a href="../ListOfTypes.html#Int_t">Int_t</a> ibranch;
422 <a href="../ListOfTypes.html#Bool_t">Bool_t</a> phosNotFound = kTRUE ;
423 <a href="../ListOfTypes.html#Bool_t">Bool_t</a> digitizerNotFound = kTRUE ;
425 for(ibranch = 0;ibranch <branches->GetEntries();ibranch++){
428 digitsBranch=(TBranch *) branches->At(ibranch) ;
429 if( strcmp("PHOS",digitsBranch->GetName())==0 )
431 if( strlen(digitsBranch->GetTitle()) == 0)
432 phosNotFound = kFALSE ;
435 if(strcmp(file,digitsBranch->GetTitle()) == 0)
436 phosNotFound = kFALSE ;
440 if(digitizerNotFound){
441 digitizerBranch = (TBranch *) branches->At(ibranch) ;
442 if( strcmp(digitizerBranch->GetName(),"<a href=".././AliPHOSDigitizer.html">AliPHOSDigitizer</a>") == 0)
444 if( strlen(digitizerBranch->GetTitle()) == 0)
445 digitizerNotFound = kFALSE ;
448 if( strcmp(digitizerBranch->GetTitle(),file) == 0)
449 digitizerNotFound = kFALSE ;
453 if(digitizerNotFound || phosNotFound){ // create new branches
454 <b> //Compose filename </b>
455 TDirectory *cwd = gDirectory;
457 <b> //First create list of sdigits</b>
458 <a href="../ListOfTypes.html#Int_t">Int_t</a> bufferSize = 32000 ;
459 digitsBranch = gAlice->TreeD()->Branch("PHOS",&<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigits">fDigits</a>,bufferSize);
460 <b> //we store filename in Title feld as well because in the case of small size of branch</b>
461 <b> //it will be stored in the header file, and information about branchfilename will be lost.</b>
462 digitsBranch->SetTitle(file);
464 digitsBranch->SetFile(file);
465 TIter next( digitsBranch->GetListOfBranches());
466 while ((digitsBranch=(TBranch*)next())) {
467 digitsBranch->SetFile(file);
472 digitsBranch->SetTitle("");
475 <b> //second - create Digitizer</b>
476 <a href="../ListOfTypes.html#Int_t">Int_t</a> splitlevel = 0 ;
477 <a href=".././AliPHOSDigitizer.html">AliPHOSDigitizer</a> * d = this ;
478 digitizerBranch = gAlice->TreeD()->Branch("<a href=".././AliPHOSDigitizer.html">AliPHOSDigitizer</a>","<a href=".././AliPHOSDigitizer.html">AliPHOSDigitizer</a>",
479 &d,bufferSize,splitlevel);
480 <b> //we store filename in Title feld as well because in the case of small size of branch</b>
481 <b> //it will be stored in the header file, and information about branchfilename will be lost.</b>
482 digitizerBranch->SetTitle(file);
484 digitizerBranch->SetFile(file);
485 TIter next( digitizerBranch->GetListOfBranches());
486 while ((digitizerBranch=(TBranch*)next())) {
487 digitizerBranch->SetFile(file);
492 digitizerBranch->SetTitle("");
494 else{ //if not create new branches, set addresses to old ones
496 cout << "fill old branches " << endl ;
498 digitsBranch->SetAddress(&<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigits">fDigits</a>);
499 <a href=".././AliPHOSDigitizer.html">AliPHOSDigitizer</a> * d = this ;
500 digitizerBranch->SetAddress(&d) ;
503 gAlice->TreeD()->Fill() ;
505 gAlice->TreeD()->Write(0,kOverwrite) ;
508 <b>//____________________________________________________________________________</b>
509 <a name="AliPHOSDigitizer:Exec"> </a><a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:Exec">AliPHOSDigitizer::Exec</a>(<a href="../ListOfTypes.html#Option_t">Option_t</a> *option) {
511 if(!<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fInitialized">fInitialized</a>) <a href="#AliPHOSDigitizer:Init">Init</a>() ;
513 if(strstr(option,"tim"))
514 gBenchmark->Start("PHOSDigitizer");
516 <b> //reset events numbers to start from the beginnig</b>
517 <a href="#AliPHOSDigitizer:Reset">Reset</a>() ;
519 while(<a href="#AliPHOSDigitizer:Combinator">Combinator</a>()){
521 if(!<a href="#AliPHOSDigitizer:ReadSDigits">ReadSDigits</a>()) //read sdigits event(s) evaluated by <a href="#AliPHOSDigitizer:Combinator">Combinator</a>() from file(s)
524 <a href="#AliPHOSDigitizer:Digitize">Digitize</a>(option) ; //Add prepared SDigits to digits and add the noise
525 <a href="#AliPHOSDigitizer:WriteDigits">WriteDigits</a>() ;
527 if(strstr(option,"deb"))
528 <a href="#AliPHOSDigitizer:PrintDigits">PrintDigits</a>(option);
532 if(strstr(option,"tim")){
533 gBenchmark->Stop("PHOSDigitizer");
534 cout << "<a href=".././AliPHOSDigitizer.html">AliPHOSDigitizer</a>:" << endl ;
535 cout << " took " << gBenchmark->GetCpuTime("PHOSDigitizer") << " seconds for SDigitizing "
536 << gBenchmark->GetCpuTime("PHOSDigitizer")/(<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fIeventMax">fIeventMax</a>->At(0)) << " seconds per event " << endl ;
542 <b>//__________________________________________________________________</b>
543 <a name="AliPHOSDigitizer:ReadSDigits"> </a><a href="../ListOfTypes.html#Bool_t">Bool_t</a> <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:ReadSDigits">AliPHOSDigitizer::ReadSDigits</a>(){
544 <b>// Reads summable digits from the opened files for the particular set of events given by <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fIevent">fIevent</a></b>
546 if(!<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fInitialized">fInitialized</a>) <a href="#AliPHOSDigitizer:Init">Init</a>() ;
548 <a href="../ListOfTypes.html#Int_t">Int_t</a> inputs ;
549 for(inputs = <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fNinputs">fNinputs</a>-1; inputs >= 0; inputs --){
551 <a href="../ListOfTypes.html#Int_t">Int_t</a> event = <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fIevent">fIevent</a>->At(inputs) ;
553 TFile * file = (TFile*) gROOT->GetFile(((TObjString *) <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fHeaderFiles">fHeaderFiles</a>->At(inputs))->GetString() ) ;
556 <b> // Get SDigits Tree header from file</b>
557 <a href="../ListOfTypes.html#char">char</a> treeName[20];
558 sprintf(treeName,"TreeS%d",event);
559 TTree * treeS = (TTree*)file->Get(treeName);
562 cout << "Error at <a href=".././AliPHOSDigitizer.html">AliPHOSDigitizer</a>: no "<<treeName << " in file " << file->GetName() << endl ;
563 cout << "Do nothing " << endl ;
567 TBranch * sdigitsBranch = 0;
568 TBranch * sdigitizerBranch = 0;
570 TObjArray * branches = treeS->GetListOfBranches() ;
571 <a href="../ListOfTypes.html#Int_t">Int_t</a> ibranch;
572 <a href="../ListOfTypes.html#Bool_t">Bool_t</a> phosNotFound = kTRUE ;
573 <a href="../ListOfTypes.html#Bool_t">Bool_t</a> sdigitizerNotFound = kTRUE ;
575 for(ibranch = 0;ibranch <branches->GetEntries();ibranch++){
578 sdigitsBranch=(TBranch *) branches->At(ibranch) ;
579 if(( strcmp("PHOS",sdigitsBranch->GetName())==0 ) &&
580 ((TObjString*) <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitsFiles">fSDigitsFiles</a>->At(inputs))->GetString().CompareTo(sdigitsBranch->GetTitle())== 0 )
581 phosNotFound = kFALSE ;
585 if(sdigitizerNotFound){
586 sdigitizerBranch = (TBranch *) branches->At(ibranch) ;
587 if(( strcmp(sdigitizerBranch->GetName(),"<a href=".././AliPHOSSDigitizer.html">AliPHOSSDigitizer</a>") == 0) &&
588 ((TObjString*) <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitsFiles">fSDigitsFiles</a>->At(inputs))->GetString().CompareTo(sdigitizerBranch->GetTitle())== 0 )
589 sdigitizerNotFound = kFALSE ;
594 if(sdigitizerNotFound || phosNotFound){
595 cout << "Can't find Branch with sdigits or SDigitizer in the file " ;
596 if( ((TObjString*)<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitsFiles">fSDigitsFiles</a>->At(inputs))->GetString().IsNull() )
597 cout << file->GetName() << endl ;
599 cout << ((TObjString*)<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitsFiles">fSDigitsFiles</a>->At(inputs))->GetString().Data() << endl ;
600 cout << "Do nothing" <<endl ;
604 TClonesArray * sdigits = (TClonesArray*) <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigits">fSDigits</a>->At(inputs) ;
605 sdigitsBranch->SetAddress(&sdigits) ;
607 <a href=".././AliPHOSSDigitizer.html">AliPHOSSDigitizer</a> *sDigitizer = new <a href=".././AliPHOSSDigitizer.html">AliPHOSSDigitizer</a>();
608 sdigitizerBranch->SetAddress(&sDigitizer) ;
609 treeS->GetEvent(0) ;
611 if(<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitizer">fSDigitizer</a> == 0)
612 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitizer">fSDigitizer</a> = sDigitizer ;
614 if(!((*<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitizer">fSDigitizer</a>)==(*sDigitizer)) ){
615 cout << "ERROR: you are using sdigits made with different SDigitizers" << endl ;
616 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitizer">fSDigitizer</a>-><a href=".././AliPHOSSDigitizer.html#AliPHOSSDigitizer:Print">Print</a>("") ;
617 sDigitizer-><a href="#AliPHOSDigitizer:Print">Print</a>("") ;
618 cout << "Do Nothing " << endl ;
623 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fPedestal">fPedestal</a> = <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitizer">fSDigitizer</a>-><a href=".././AliPHOSSDigitizer.html#AliPHOSSDigitizer:GetPedestalParameter">GetPedestalParameter</a>() ;
624 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSlope">fSlope</a> = <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitizer">fSDigitizer</a>-><a href=".././AliPHOSSDigitizer.html#AliPHOSSDigitizer:GetCalibrationParameter">GetCalibrationParameter</a>() ;
629 <b>//__________________________________________________________________</b>
630 <a name="AliPHOSDigitizer:MixWith"> </a><a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:MixWith">AliPHOSDigitizer::MixWith</a>(<a href="../ListOfTypes.html#char">char</a>* HeaderFile, <a href="../ListOfTypes.html#char">char</a>* SDigitsFile){
633 if(!<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fInitialized">fInitialized</a>)
634 <a href="#AliPHOSDigitizer:Init">Init</a>() ;
638 cout << "Specify at least header file to merge"<< endl ;
642 <a href="../ListOfTypes.html#Int_t">Int_t</a> inputs ;
643 for(inputs = 0; inputs < <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fNinputs">fNinputs</a> ; inputs++){
644 if(strcmp(((TObjString *)<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fHeaderFiles">fHeaderFiles</a>->At(inputs))->GetString(),HeaderFile) == 0 ){
645 if(SDigitsFile == 0){
646 if(((TObjString*)<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitsFiles">fSDigitsFiles</a>->At(inputs))->GetString().CompareTo("") == 0){
647 cout << "Entry already exists, do not add" << endl ;
652 if(((TObjString*)<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitsFiles">fSDigitsFiles</a>->At(inputs))->GetString().Contains(SDigitsFile)){
653 cout << "Entry already exists, do not add" << endl ;
659 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fHeaderFiles">fHeaderFiles</a>->Expand(<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fNinputs">fNinputs</a>+1) ;
660 new((*<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fHeaderFiles">fHeaderFiles</a>)[<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fNinputs">fNinputs</a>]) TObjString(HeaderFile) ;
663 TFile * file = new TFile(((TObjString *) <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fHeaderFiles">fHeaderFiles</a>->At(<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fNinputs">fNinputs</a>))->GetString()) ;
667 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitsFiles">fSDigitsFiles</a>->Expand(<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fNinputs">fNinputs</a>+1) ;
668 new((*<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitsFiles">fSDigitsFiles</a>)[<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fNinputs">fNinputs</a>]) TObjString(SDigitsFile) ;
669 <b> //Normally, branch names are modified to be "./xxx", so add this "./" </b>
670 <a href="../ListOfTypes.html#char">char</a> * base = new <a href="../ListOfTypes.html#char">char</a>[strlen(gAlice->GetBaseFile())+2];
671 sprintf(base,"%s/",gAlice->GetBaseFile());
672 if(!strstr(SDigitsFile,base) )
673 ((TObjString*) <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitsFiles">fSDigitsFiles</a>->At(<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fNinputs">fNinputs</a>))->GetString().Insert(0,base) ;
677 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigits">fSDigits</a>->Expand(<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fNinputs">fNinputs</a>+1) ;
678 new((*<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigits">fSDigits</a>)[<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fNinputs">fNinputs</a>]) TClonesArray("<a href=".././AliPHOSDigit.html">AliPHOSDigit</a>",1000) ;
680 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fIevent">fIevent</a>->Set(<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fNinputs">fNinputs</a>+1) ;
681 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fIevent">fIevent</a>->AddAt(-1, <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fNinputs">fNinputs</a>) ;
683 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fIeventMax">fIeventMax</a>->Set(<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fNinputs">fNinputs</a>+1) ;
685 TTree * te = (TTree *) file->Get("TE") ;
686 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fIeventMax">fIeventMax</a>->AddAt((<a href="../ListOfTypes.html#Int_t">Int_t</a>) te->GetEntries(), <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fNinputs">fNinputs</a> );
688 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fNinputs">fNinputs</a>++ ;
691 <b>//__________________________________________________________________</b>
692 <a name="AliPHOSDigitizer:Print"> </a><a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:Print">AliPHOSDigitizer::Print</a>(<a href="../ListOfTypes.html#Option_t">Option_t</a>* option)const {
694 if(<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fInitialized">fInitialized</a>){
696 cout << "------------------- "<< GetName() << " -------------" << endl ;
697 cout << "Digitizing sDigits from file(s): " <<endl ;
698 <a href="../ListOfTypes.html#Int_t">Int_t</a> input ;
699 for(input = 0; input < <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fNinputs">fNinputs</a> ; input++) {
700 cout << " " << ((TObjString *) <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fHeaderFiles">fHeaderFiles</a>->At(input))->GetString() <<
701 " Branch: " << ((TObjString *) <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitsFiles">fSDigitsFiles</a>->At(input))->GetString() << endl ;
704 cout << "Writing digits to " << ((TObjString *) <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fHeaderFiles">fHeaderFiles</a>->At(0))->GetString() << endl ;
707 cout << "With following parameters: " << endl ;
708 cout << " Electronics noise in EMC (<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fPinNoise">fPinNoise</a>) = " << <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fPinNoise">fPinNoise</a> << endl ;
709 cout << " Threshold in EMC (<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fEMCDigitThreshold">fEMCDigitThreshold</a>) = " << <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fEMCDigitThreshold">fEMCDigitThreshold</a> << endl ; ;
710 cout << " Noise in CPV (<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fCPVNoise">fCPVNoise</a>) = " << <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fCPVNoise">fCPVNoise</a> << endl ;
711 cout << " Threshold in CPV (<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fCPVDigitThreshold">fCPVDigitThreshold</a>) = " << <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fCPVDigitThreshold">fCPVDigitThreshold</a> << endl ;
712 cout << " Noise in PPSD (<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fPPSDNoise">fPPSDNoise</a>) = " << <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fPPSDNoise">fPPSDNoise</a> << endl ;
713 cout << " Threshold in PPSD (<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fPPSDDigitThreshold">fPPSDDigitThreshold</a>) = " << <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fPPSDDigitThreshold">fPPSDDigitThreshold</a> << endl ;
714 cout << "---------------------------------------------------" << endl ;
717 cout << "<a href=".././AliPHOSDigitizer.html">AliPHOSDigitizer</a> not initialized " << endl ;
720 <b>//__________________________________________________________________</b>
721 <a name="AliPHOSDigitizer:PrintDigits"> </a><a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:PrintDigits">AliPHOSDigitizer::PrintDigits</a>(<a href="../ListOfTypes.html#Option_t">Option_t</a> * option){
723 cout << "AliPHOSDigitiser:"<< endl ;
724 cout << " Number of entries in Digits list " << <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigits">fDigits</a>->GetEntriesFast() << endl ;
726 if(strstr(option,"all")){
728 <b> //loop over digits</b>
729 <a href=".././AliPHOSDigit.html">AliPHOSDigit</a> * digit;
730 cout << "Digit Id " << " Amplitude " << " Index " << " Nprim " << " Primaries list " << endl;
731 <a href="../ListOfTypes.html#Int_t">Int_t</a> index ;
732 for (index = 0 ; index < <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigits">fDigits</a>->GetEntries() ; index++) {
733 digit = (<a href=".././AliPHOSDigit.html">AliPHOSDigit</a> * ) <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigits">fDigits</a>->At(index) ;
734 cout << setw(8) << digit->GetId() << " " << setw(3) << digit->GetAmp() << " "
735 << setw(6) << digit->GetIndexInList() << " "
736 << setw(5) << digit->GetNprimary() <<" ";
738 <a href="../ListOfTypes.html#Int_t">Int_t</a> iprimary;
739 for (iprimary=0; iprimary<digit->GetNprimary(); iprimary++)
740 cout << setw(5) << digit->GetPrimary(iprimary+1) << " ";
746 <b>//__________________________________________________________________</b>
747 <a name="AliPHOSDigitizer:SetSDigitsBranch"> </a><a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:SetSDigitsBranch">AliPHOSDigitizer::SetSDigitsBranch</a>(const <a href="../ListOfTypes.html#char">char</a>* file){
748 <b> // we set name of the SDigits branch file in the first! header file</b>
749 if(!<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fInitialized">fInitialized</a>) <a href="#AliPHOSDigitizer:Init">Init</a>() ;
751 <a href="../ListOfTypes.html#char">char</a> * base = new <a href="../ListOfTypes.html#char">char</a>[strlen(gAlice->GetBaseFile())+2+strlen(file)];
752 sprintf(base,"%s/%s",gAlice->GetBaseFile(),file);
753 ((TObjString*) <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fSDigitsFiles">fSDigitsFiles</a>->At(0) )->SetString((<a href="../ListOfTypes.html#char">char</a>*)base) ;
757 <b>//__________________________________________________________________</b>
758 <a name="AliPHOSDigitizer:SetDigitsBranch"> </a><a href="../ListOfTypes.html#void">void</a> <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:SetDigitsBranch">AliPHOSDigitizer::SetDigitsBranch</a>(const <a href="../ListOfTypes.html#char">char</a>* file){
759 <b> //Sets the name of the file to which Digits branch will be diverted </b>
760 if(!<a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fInitialized">fInitialized</a>) <a href="#AliPHOSDigitizer:Init">Init</a>() ;
762 <a href="../ListOfTypes.html#char">char</a> * base = new <a href="../ListOfTypes.html#char">char</a>[strlen(gAlice->GetBaseFile())+2+strlen(file)];
763 sprintf(base,"%s/%s",gAlice->GetBaseFile(),file);
764 <a href=".././AliPHOSDigitizer.html#AliPHOSDigitizer:fDigitsFile">fDigitsFile</a> = base ;
774 <a href="http://root.cern.ch/root/Welcome.html">ROOT page</a> - <a href="../ClassIndex.html">Class index</a> - <a href="#TopOfPage">Top of the page</a><br>
776 <hr>This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to <a href="mailto:rootdev@root.cern.ch">ROOT support</a>, or contact <a href="mailto:rootdev@root.cern.ch">the developers</a> with any questions or problems regarding ROOT.