]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PHOS/AliPHOSSimParam.cxx
Simulation parameters collected in AliPHOSSimParam
[u/mrichter/AliRoot.git] / PHOS / AliPHOSSimParam.cxx
diff --git a/PHOS/AliPHOSSimParam.cxx b/PHOS/AliPHOSSimParam.cxx
new file mode 100644 (file)
index 0000000..14ff7af
--- /dev/null
@@ -0,0 +1,134 @@
+/**************************************************************************
+ * Copyright(c) 2007, ALICE Experiment at CERN, All rights reserved.      *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+// Base class for the PHOS simulation parameters.
+// Do not use in the simulation; use derivative classes instead.
+// Author: Dmitri Peressounko, RRC KI
+
+// --- AliRoot header files ---
+#include "AliPHOSSimParam.h"
+#include "AliLog.h"
+
+ClassImp(AliPHOSSimParam)
+
+AliPHOSSimParam  * AliPHOSSimParam::fgSimParam = 0 ;
+//-----------------------------------------------------------------------------
+AliPHOSSimParam::AliPHOSSimParam() :
+  TNamed(),
+  fLightYieldMean(0.),fIntrinsicAPDEfficiency(0.),
+  fLightFactor(0.),fAPDFactor(0.),         
+  fAPDNoise(0.),fEMCDigitThreshold(0.),
+  fEMCADCchannel(0.),fTOFa(0.),fTOFb(0.),
+  fADCpedestalCpv(0.),fADCchanelCpv(0.),
+  fCPVNoise(0.),fCPVDigitThreshold(0.),fNADCcpv(0),
+  fDigitizeE(0)
+{
+  //Default constructor.
+  for(Int_t i=0; i<10; i++) fDStream[i] = 0 ;
+}
+
+//-----------------------------------------------------------------------------
+AliPHOSSimParam::AliPHOSSimParam(Int_t) :
+  TNamed(),
+  fLightYieldMean(0.),fIntrinsicAPDEfficiency(0.),
+  fLightFactor(0.),fAPDFactor(0.),         
+  fAPDNoise(0.),fEMCDigitThreshold(0.),
+  fEMCADCchannel(0.),fTOFa(0.),fTOFb(0.),
+  fADCpedestalCpv(0.),fADCchanelCpv(0.),
+  fCPVNoise(0.),fCPVDigitThreshold(0.),fNADCcpv(0),
+  fDigitizeE(0)
+{
+  //Real (private) constructor 
+  //Set default parameters
+
+  //Parameters describing energy deposition and light collection by APD, used in AliPHOSv1
+  //Photoelectron statistics:
+  // The light yield is a poissonian distribution of the number of
+  // photons created in the PbWo4 crystal, calculated using following formula
+  // NumberOfPhotons = EnergyLost * LightYieldMean* APDEfficiency 
+  // LightYieldMean is parameter calculated to be over 47000 photons per GeV
+  // APDEfficiency is 0.02655
+  // k_0 is 0.0045 from Valery Antonenko
+  // The number of electrons created in the APD is
+  // NumberOfElectrons = APDGain * LightYield
+  // The APD Gain is 300
+  fLightYieldMean = 47000;            //Average number of photoelectrons per GeV
+  fIntrinsicAPDEfficiency = 0.02655 ; //APD efficiency including geometric coverage
+//  fLightYieldAttenuation  = 0.0045 ;  //light attenuation in PWO. Last analysis shows no z-position dependence
+//                                      //so we removed this dependence from simulations 
+  fLightFactor            = fLightYieldMean * fIntrinsicAPDEfficiency ; //Average number of photons collected by 
+                            //APD per GeV deposited energy
+  fAPDFactor              = (13.418/fLightYieldMean/100.) * 300. ; //factor relating light yield and APD response
+                            //evaluated as (13.418/fLightYieldMean/100) * APDGain ;
+
+
+  //Parameters defining electronic noise calculation and Digits noise thresholds
+  //used in AliPHOSDigitizer
+  fAPDNoise           = 0.004 ;  // [GeV]
+  fEMCDigitThreshold  = 0.012 ;  // [GeV]
+  fEMCADCchannel      = 0.005 ;  // [GeV]
+  fTOFa               = 0.5e-9 ; // [sec] constant term
+  fTOFb               = 1.e-9 ;  // [sec/sqrt(GeV)]] stohastic term
+
+  fADCpedestalCpv     = 0.012 ;  // [aux units]
+  fADCchanelCpv       = 0.0012;  // [aux units]    
+  fCPVNoise           = 0.01;    // [aux units]
+  fCPVDigitThreshold  = 0.09 ;   // [aux units]
+  fNADCcpv  =  (Int_t)TMath::Power(2,12) ;
+
+  //Imput streams for merging. If true => this stream contains digits (and thus noise) and not SDigits.
+  for(Int_t i=0; i<10; i++){
+    fDStream[i] = 0 ;
+  }
+  fgSimParam = this ;
+}
+
+//-----------------------------------------------------------------------------
+AliPHOSSimParam::AliPHOSSimParam(const AliPHOSSimParam& ):
+  TNamed(),
+  fLightYieldMean(0.),fIntrinsicAPDEfficiency(0.),
+  fLightFactor(0.),fAPDFactor(0.),         
+  fAPDNoise(0.),fEMCDigitThreshold(0.),
+  fEMCADCchannel(0.),fTOFa(0.),fTOFb(0.),
+  fADCpedestalCpv(0.),fADCchanelCpv(0.),
+  fCPVNoise(0.),fCPVDigitThreshold(0.),fNADCcpv(0),
+  fDigitizeE(0)
+{
+  //Copy constructor.
+  AliError("Should not use copy constructor for singleton") ;
+  for(Int_t  i=0; i<10; i++){
+    fDStream[i] = 0 ;
+  }
+  fgSimParam = this ;
+}
+//-----------------------------------------------------------------------------                                                            
+AliPHOSSimParam * AliPHOSSimParam::GetInstance(){
+
+  if(!fgSimParam)
+    new AliPHOSSimParam(0) ;
+  return fgSimParam ;
+}
+//-----------------------------------------------------------------------------
+AliPHOSSimParam& AliPHOSSimParam::operator = (const AliPHOSSimParam& simParam)
+{
+  //Assignment operator.
+
+  if(this != &simParam) {
+    AliError("Should not use operator= for singleton\n") ;
+  }
+
+  return *this;
+}
+