ROOT logo
/**************************************************************************
 * 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.),
  fCellNonLineaityA(0.),fCellNonLineaityB(1.),fCellNonLineaityC(1.),
  fEMCSubtractPedestals(kFALSE),
  fGlobalAltroOffset(0),fGlobalAltroThreshold(0),fEMCSampleQualityCut(0),
  fADCpedestalCpv(0.),fADCchanelCpv(0.),
  fCPVNoise(0.),fCPVDigitThreshold(0.),fNADCcpv(0),
  fDigitizeE(0),fCellNonLineaityOn(1)
{
  //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.),
  fCellNonLineaityA(0.),fCellNonLineaityB(1.),fCellNonLineaityC(1.),
  fEMCSubtractPedestals(kFALSE),
  fGlobalAltroOffset(0),fGlobalAltroThreshold(0),fEMCSampleQualityCut(0),
  fADCpedestalCpv(0.),fADCchanelCpv(0.),
  fCPVNoise(0.),fCPVDigitThreshold(0.),
  fNADCcpv(0),
  fDigitizeE(0),fCellNonLineaityOn(1)
{
  //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  = 2.5   ;  // [ADC counts]
  fEMCADCchannel      = 0.005 ;  // [GeV]
  fTOFa               = 0.5e-9 ; // [sec] constant term
  fTOFb               = 1.e-9 ;  // [sec/sqrt(GeV)]] stohastic term
//  fCellNonLineaityA   = 0.18 ;   //Amp of non-linearity of cell responce
//  fCellNonLineaityB   = 0.109;   //Scale of non-linearity of cell responce
//  fCellNonLineaityC   = 0.976;   //Overall calibration
  fCellNonLineaityA   = 0. ;   //Amp of non-linearity of cell responce
  fCellNonLineaityB   = 0.109;   //Scale of non-linearity of cell responce
  fCellNonLineaityC   = 1.;   //Overall calibration

  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) ;

  fGlobalAltroOffset = 10;
  fGlobalAltroThreshold = 5;
  fEMCSampleQualityCut = 4.;

  //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.),
  fCellNonLineaityA(0.),fCellNonLineaityB(1.),fCellNonLineaityC(1.),
  fEMCSubtractPedestals(kFALSE),
  fGlobalAltroOffset(0),fGlobalAltroThreshold(0),fEMCSampleQualityCut(1.),
  fADCpedestalCpv(0.),fADCchanelCpv(0.),
  fCPVNoise(0.),fCPVDigitThreshold(0.),fNADCcpv(0),
  fDigitizeE(0),fCellNonLineaityOn(1)
{
  //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;
}

 AliPHOSSimParam.cxx:1
 AliPHOSSimParam.cxx:2
 AliPHOSSimParam.cxx:3
 AliPHOSSimParam.cxx:4
 AliPHOSSimParam.cxx:5
 AliPHOSSimParam.cxx:6
 AliPHOSSimParam.cxx:7
 AliPHOSSimParam.cxx:8
 AliPHOSSimParam.cxx:9
 AliPHOSSimParam.cxx:10
 AliPHOSSimParam.cxx:11
 AliPHOSSimParam.cxx:12
 AliPHOSSimParam.cxx:13
 AliPHOSSimParam.cxx:14
 AliPHOSSimParam.cxx:15
 AliPHOSSimParam.cxx:16
 AliPHOSSimParam.cxx:17
 AliPHOSSimParam.cxx:18
 AliPHOSSimParam.cxx:19
 AliPHOSSimParam.cxx:20
 AliPHOSSimParam.cxx:21
 AliPHOSSimParam.cxx:22
 AliPHOSSimParam.cxx:23
 AliPHOSSimParam.cxx:24
 AliPHOSSimParam.cxx:25
 AliPHOSSimParam.cxx:26
 AliPHOSSimParam.cxx:27
 AliPHOSSimParam.cxx:28
 AliPHOSSimParam.cxx:29
 AliPHOSSimParam.cxx:30
 AliPHOSSimParam.cxx:31
 AliPHOSSimParam.cxx:32
 AliPHOSSimParam.cxx:33
 AliPHOSSimParam.cxx:34
 AliPHOSSimParam.cxx:35
 AliPHOSSimParam.cxx:36
 AliPHOSSimParam.cxx:37
 AliPHOSSimParam.cxx:38
 AliPHOSSimParam.cxx:39
 AliPHOSSimParam.cxx:40
 AliPHOSSimParam.cxx:41
 AliPHOSSimParam.cxx:42
 AliPHOSSimParam.cxx:43
 AliPHOSSimParam.cxx:44
 AliPHOSSimParam.cxx:45
 AliPHOSSimParam.cxx:46
 AliPHOSSimParam.cxx:47
 AliPHOSSimParam.cxx:48
 AliPHOSSimParam.cxx:49
 AliPHOSSimParam.cxx:50
 AliPHOSSimParam.cxx:51
 AliPHOSSimParam.cxx:52
 AliPHOSSimParam.cxx:53
 AliPHOSSimParam.cxx:54
 AliPHOSSimParam.cxx:55
 AliPHOSSimParam.cxx:56
 AliPHOSSimParam.cxx:57
 AliPHOSSimParam.cxx:58
 AliPHOSSimParam.cxx:59
 AliPHOSSimParam.cxx:60
 AliPHOSSimParam.cxx:61
 AliPHOSSimParam.cxx:62
 AliPHOSSimParam.cxx:63
 AliPHOSSimParam.cxx:64
 AliPHOSSimParam.cxx:65
 AliPHOSSimParam.cxx:66
 AliPHOSSimParam.cxx:67
 AliPHOSSimParam.cxx:68
 AliPHOSSimParam.cxx:69
 AliPHOSSimParam.cxx:70
 AliPHOSSimParam.cxx:71
 AliPHOSSimParam.cxx:72
 AliPHOSSimParam.cxx:73
 AliPHOSSimParam.cxx:74
 AliPHOSSimParam.cxx:75
 AliPHOSSimParam.cxx:76
 AliPHOSSimParam.cxx:77
 AliPHOSSimParam.cxx:78
 AliPHOSSimParam.cxx:79
 AliPHOSSimParam.cxx:80
 AliPHOSSimParam.cxx:81
 AliPHOSSimParam.cxx:82
 AliPHOSSimParam.cxx:83
 AliPHOSSimParam.cxx:84
 AliPHOSSimParam.cxx:85
 AliPHOSSimParam.cxx:86
 AliPHOSSimParam.cxx:87
 AliPHOSSimParam.cxx:88
 AliPHOSSimParam.cxx:89
 AliPHOSSimParam.cxx:90
 AliPHOSSimParam.cxx:91
 AliPHOSSimParam.cxx:92
 AliPHOSSimParam.cxx:93
 AliPHOSSimParam.cxx:94
 AliPHOSSimParam.cxx:95
 AliPHOSSimParam.cxx:96
 AliPHOSSimParam.cxx:97
 AliPHOSSimParam.cxx:98
 AliPHOSSimParam.cxx:99
 AliPHOSSimParam.cxx:100
 AliPHOSSimParam.cxx:101
 AliPHOSSimParam.cxx:102
 AliPHOSSimParam.cxx:103
 AliPHOSSimParam.cxx:104
 AliPHOSSimParam.cxx:105
 AliPHOSSimParam.cxx:106
 AliPHOSSimParam.cxx:107
 AliPHOSSimParam.cxx:108
 AliPHOSSimParam.cxx:109
 AliPHOSSimParam.cxx:110
 AliPHOSSimParam.cxx:111
 AliPHOSSimParam.cxx:112
 AliPHOSSimParam.cxx:113
 AliPHOSSimParam.cxx:114
 AliPHOSSimParam.cxx:115
 AliPHOSSimParam.cxx:116
 AliPHOSSimParam.cxx:117
 AliPHOSSimParam.cxx:118
 AliPHOSSimParam.cxx:119
 AliPHOSSimParam.cxx:120
 AliPHOSSimParam.cxx:121
 AliPHOSSimParam.cxx:122
 AliPHOSSimParam.cxx:123
 AliPHOSSimParam.cxx:124
 AliPHOSSimParam.cxx:125
 AliPHOSSimParam.cxx:126
 AliPHOSSimParam.cxx:127
 AliPHOSSimParam.cxx:128
 AliPHOSSimParam.cxx:129
 AliPHOSSimParam.cxx:130
 AliPHOSSimParam.cxx:131
 AliPHOSSimParam.cxx:132
 AliPHOSSimParam.cxx:133
 AliPHOSSimParam.cxx:134
 AliPHOSSimParam.cxx:135
 AliPHOSSimParam.cxx:136
 AliPHOSSimParam.cxx:137
 AliPHOSSimParam.cxx:138
 AliPHOSSimParam.cxx:139
 AliPHOSSimParam.cxx:140
 AliPHOSSimParam.cxx:141
 AliPHOSSimParam.cxx:142
 AliPHOSSimParam.cxx:143
 AliPHOSSimParam.cxx:144
 AliPHOSSimParam.cxx:145
 AliPHOSSimParam.cxx:146
 AliPHOSSimParam.cxx:147
 AliPHOSSimParam.cxx:148
 AliPHOSSimParam.cxx:149
 AliPHOSSimParam.cxx:150
 AliPHOSSimParam.cxx:151
 AliPHOSSimParam.cxx:152
 AliPHOSSimParam.cxx:153
 AliPHOSSimParam.cxx:154