]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PHOS/AliPHOSSimParam.cxx
EMCAL
[u/mrichter/AliRoot.git] / PHOS / AliPHOSSimParam.cxx
CommitLineData
f898e0f3 1/**************************************************************************
2 * Copyright(c) 2007, 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 **************************************************************************/
15
16// Base class for the PHOS simulation parameters.
17// Do not use in the simulation; use derivative classes instead.
18// Author: Dmitri Peressounko, RRC KI
19
20// --- AliRoot header files ---
21#include "AliPHOSSimParam.h"
22#include "AliLog.h"
23
24ClassImp(AliPHOSSimParam)
25
26AliPHOSSimParam * AliPHOSSimParam::fgSimParam = 0 ;
27//-----------------------------------------------------------------------------
28AliPHOSSimParam::AliPHOSSimParam() :
29 TNamed(),
30 fLightYieldMean(0.),fIntrinsicAPDEfficiency(0.),
31 fLightFactor(0.),fAPDFactor(0.),
32 fAPDNoise(0.),fEMCDigitThreshold(0.),
33 fEMCADCchannel(0.),fTOFa(0.),fTOFb(0.),
9d68672f 34 fCellNonLineaityA(0.),fCellNonLineaityB(1.),fCellNonLineaityC(1.),
c46b6a59 35 fEMCSubtractPedestals(kFALSE),
36 fGlobalAltroOffset(0),fGlobalAltroThreshold(0),fEMCSampleQualityCut(0),
f898e0f3 37 fADCpedestalCpv(0.),fADCchanelCpv(0.),
38 fCPVNoise(0.),fCPVDigitThreshold(0.),fNADCcpv(0),
9d68672f 39 fDigitizeE(0),fCellNonLineaityOn(1)
f898e0f3 40{
41 //Default constructor.
42 for(Int_t i=0; i<10; i++) fDStream[i] = 0 ;
43}
44
45//-----------------------------------------------------------------------------
46AliPHOSSimParam::AliPHOSSimParam(Int_t) :
47 TNamed(),
48 fLightYieldMean(0.),fIntrinsicAPDEfficiency(0.),
49 fLightFactor(0.),fAPDFactor(0.),
50 fAPDNoise(0.),fEMCDigitThreshold(0.),
51 fEMCADCchannel(0.),fTOFa(0.),fTOFb(0.),
9d68672f 52 fCellNonLineaityA(0.),fCellNonLineaityB(1.),fCellNonLineaityC(1.),
c46b6a59 53 fEMCSubtractPedestals(kFALSE),
54 fGlobalAltroOffset(0),fGlobalAltroThreshold(0),fEMCSampleQualityCut(0),
f898e0f3 55 fADCpedestalCpv(0.),fADCchanelCpv(0.),
5024fc61 56 fCPVNoise(0.),fCPVDigitThreshold(0.),
57 fNADCcpv(0),
9d68672f 58 fDigitizeE(0),fCellNonLineaityOn(1)
f898e0f3 59{
60 //Real (private) constructor
61 //Set default parameters
62
63 //Parameters describing energy deposition and light collection by APD, used in AliPHOSv1
64 //Photoelectron statistics:
65 // The light yield is a poissonian distribution of the number of
66 // photons created in the PbWo4 crystal, calculated using following formula
67 // NumberOfPhotons = EnergyLost * LightYieldMean* APDEfficiency
68 // LightYieldMean is parameter calculated to be over 47000 photons per GeV
69 // APDEfficiency is 0.02655
70 // k_0 is 0.0045 from Valery Antonenko
71 // The number of electrons created in the APD is
72 // NumberOfElectrons = APDGain * LightYield
73 // The APD Gain is 300
74 fLightYieldMean = 47000; //Average number of photoelectrons per GeV
75 fIntrinsicAPDEfficiency = 0.02655 ; //APD efficiency including geometric coverage
76// fLightYieldAttenuation = 0.0045 ; //light attenuation in PWO. Last analysis shows no z-position dependence
77// //so we removed this dependence from simulations
78 fLightFactor = fLightYieldMean * fIntrinsicAPDEfficiency ; //Average number of photons collected by
79 //APD per GeV deposited energy
80 fAPDFactor = (13.418/fLightYieldMean/100.) * 300. ; //factor relating light yield and APD response
81 //evaluated as (13.418/fLightYieldMean/100) * APDGain ;
82
83
84 //Parameters defining electronic noise calculation and Digits noise thresholds
85 //used in AliPHOSDigitizer
86 fAPDNoise = 0.004 ; // [GeV]
5024fc61 87 fEMCDigitThreshold = 2.5 ; // [ADC counts]
f898e0f3 88 fEMCADCchannel = 0.005 ; // [GeV]
89 fTOFa = 0.5e-9 ; // [sec] constant term
90 fTOFb = 1.e-9 ; // [sec/sqrt(GeV)]] stohastic term
acfd3a6f 91// fCellNonLineaityA = 0.18 ; //Amp of non-linearity of cell responce
92// fCellNonLineaityB = 0.109; //Scale of non-linearity of cell responce
93// fCellNonLineaityC = 0.976; //Overall calibration
94 fCellNonLineaityA = 0. ; //Amp of non-linearity of cell responce
dde7e19f 95 fCellNonLineaityB = 0.109; //Scale of non-linearity of cell responce
acfd3a6f 96 fCellNonLineaityC = 1.; //Overall calibration
f898e0f3 97
98 fADCpedestalCpv = 0.012 ; // [aux units]
99 fADCchanelCpv = 0.0012; // [aux units]
100 fCPVNoise = 0.01; // [aux units]
101 fCPVDigitThreshold = 0.09 ; // [aux units]
102 fNADCcpv = (Int_t)TMath::Power(2,12) ;
103
c46b6a59 104 fGlobalAltroOffset = 10;
105 fGlobalAltroThreshold = 5;
106 fEMCSampleQualityCut = 4.;
107
f898e0f3 108 //Imput streams for merging. If true => this stream contains digits (and thus noise) and not SDigits.
109 for(Int_t i=0; i<10; i++){
110 fDStream[i] = 0 ;
111 }
112 fgSimParam = this ;
113}
114
115//-----------------------------------------------------------------------------
116AliPHOSSimParam::AliPHOSSimParam(const AliPHOSSimParam& ):
117 TNamed(),
118 fLightYieldMean(0.),fIntrinsicAPDEfficiency(0.),
119 fLightFactor(0.),fAPDFactor(0.),
120 fAPDNoise(0.),fEMCDigitThreshold(0.),
121 fEMCADCchannel(0.),fTOFa(0.),fTOFb(0.),
9d68672f 122 fCellNonLineaityA(0.),fCellNonLineaityB(1.),fCellNonLineaityC(1.),
c46b6a59 123 fEMCSubtractPedestals(kFALSE),
124 fGlobalAltroOffset(0),fGlobalAltroThreshold(0),fEMCSampleQualityCut(1.),
f898e0f3 125 fADCpedestalCpv(0.),fADCchanelCpv(0.),
126 fCPVNoise(0.),fCPVDigitThreshold(0.),fNADCcpv(0),
9d68672f 127 fDigitizeE(0),fCellNonLineaityOn(1)
f898e0f3 128{
129 //Copy constructor.
130 AliError("Should not use copy constructor for singleton") ;
131 for(Int_t i=0; i<10; i++){
132 fDStream[i] = 0 ;
133 }
134 fgSimParam = this ;
135}
136//-----------------------------------------------------------------------------
137AliPHOSSimParam * AliPHOSSimParam::GetInstance(){
138
139 if(!fgSimParam)
140 new AliPHOSSimParam(0) ;
141 return fgSimParam ;
142}
143//-----------------------------------------------------------------------------
144AliPHOSSimParam& AliPHOSSimParam::operator = (const AliPHOSSimParam& simParam)
145{
146 //Assignment operator.
147
148 if(this != &simParam) {
149 AliError("Should not use operator= for singleton\n") ;
150 }
151
152 return *this;
153}
154