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 EMCAL simulation parameters.
 //
 //
 */

// --- Root header files ---
#include "TMath.h"
// --- AliRoot header files ---
#include "AliEMCALSimParam.h"
#include "AliLog.h"


ClassImp(AliEMCALSimParam)

AliEMCALSimParam  * AliEMCALSimParam::fgSimParam = 0 ;
//-----------------------------------------------------------------------------
AliEMCALSimParam::AliEMCALSimParam() :
TNamed(),    
fDigitThreshold(0),
fMeanPhotonElectron(0),
fGainFluctuations(0),
fPinNoise(0),
fTimeNoise(0),
fTimeDelay(0),
fTimeResolutionPar0(0),
fTimeResolutionPar1(0),
fNADCEC(0),//Digitizer
fA(0.),
fB(0.),
fECPrimThreshold(0.) //SDigitizer   
{
  //Constructor 

  //Parameters in Digitizer
  fMeanPhotonElectron = 4400;    // electrons per GeV 
  fGainFluctuations   = 15.;     // obtained empiricaly to match beam test, from Paraskevi Ganoti   
  fPinNoise           = 0.012;   // APD noise in GeV from analysis test beam data 
  fDigitThreshold     = 3;       // 3 ADC counts not anymore cut in energy: //fPinNoise * 3; // 3 * sigma
  fTimeNoise          = 1.28e-5; // time noise in s
  fTimeResolutionPar0 = 0.26666; // From F. Blanco: 0.51639^2
  fTimeResolutionPar1 = 1.45861; // From F. Blanco: 1.20773^2
  fTimeDelay          = 600e-9 ; // 600 ns

  fNADCEC             = (Int_t) TMath::Power(2,16) ; // number of channels in Tower ADC - 65536
	
  //SDigitizer
  fA                  = 0;
  fB                  = 1.e+6; // Dynamic range now 2 TeV
  fECPrimThreshold    = 0.05;  // GeV	// threshold for deposit energy of hit
	
}


//-----------------------------------------------------------------------------
AliEMCALSimParam::AliEMCALSimParam(const AliEMCALSimParam& ):
TNamed(),
fDigitThreshold(0),
fMeanPhotonElectron(0),
fGainFluctuations(0),
fPinNoise(0),
fTimeNoise(0),
fTimeDelay(0),
fTimeResolutionPar0(0),
fTimeResolutionPar1(0),
fNADCEC(0),
fA(0.),
fB(0.),
fECPrimThreshold(0.)//SDigitizer
{
  //Copy constructor.
  AliError("Should not use copy constructor for singleton") ;

  fgSimParam = this ;
	
}

//-----------------------------------------------------------------------------                                                            
AliEMCALSimParam * AliEMCALSimParam::GetInstance(){
// Get Instance

  if(!fgSimParam){
  	fgSimParam = new AliEMCALSimParam() ;
  }
  
  return fgSimParam ;
	
}

//-----------------------------------------------------------------------------
AliEMCALSimParam& AliEMCALSimParam::operator = (const AliEMCALSimParam& simParam)
{
  //Assignment operator.

  if(this != &simParam) {
    AliError("Should not use operator= for singleton\n") ;
  }

  return *this;
}

//-----------------------------------------------------------------------------
void AliEMCALSimParam::Print(Option_t *) const
{
  // Print simulation parameters to stdout
 
  printf("=== Parameters in Digitizer === \n");
  printf("\t Electronics noise in EMC (fPinNoise)       = %f, (fTimeNoise) = %e\n", fPinNoise, fTimeNoise) ;
  printf("\t Threshold  in EMC  (fDigitThreshold)       = %d\n", fDigitThreshold)  ;
  printf("\t Time Resolution (fTimeResolutionPar0)      = %g\n", fTimeResolutionPar0) ;
  printf("\t Time Resolution (fTimeResolutionPar1)      = %g\n", fTimeResolutionPar1) ;
  printf("\t Time Delay (fTimeDelay)                    = %g\n", fTimeDelay) ;
  printf("\t Mean Photon-Electron (fMeanPhotonElectron) = %d, Gain Fluc. (fGainFluctuations) %2.1f\n", fMeanPhotonElectron,fGainFluctuations)  ;
  printf("\t N channels in EC section ADC (fNADCEC)     = %d\n", fNADCEC) ;

  printf("\n");

  printf("=== Parameters in SDigitizer === \n");
  printf("\t sdigitization parameters       A = %f\n",     fA);
  printf("\t                                B = %f\n",     fB);
  printf("\t Threshold for EC Primary assignment  = %f\n", fECPrimThreshold);
	
}

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