#include "AliEMCALDigitizer.h"
#include "AliEMCALSDigitizer.h"
#include "AliEMCALGeometry.h"
-#include "AliEMCALTick.h"
+//#include "AliEMCALTick.h"
#include "AliEMCALCalibData.h"
#include "AliEMCALSimParam.h"
#include "AliEMCALRawDigit.h"
// fPedestal(0), //Not used, remove?
// fSlope(0), //Not used, remove?
fPinNoise(0),
+ fTimeDelay(0),
fTimeResolution(0),
// fTimeThreshold(0), //Not used, remove?
// fTimeSignalLength(0), //Not used, remove?
// fPedestal(0),//Not used, remove?
// fSlope(0), //Not used, remove?
fPinNoise(0),
+ fTimeDelay(0),
fTimeResolution(0),
// fTimeThreshold(0), //Not used, remove?
// fTimeSignalLength(0), //Not used, remove?
// fPedestal(d.fPedestal), //Not used, remove?
// fSlope(d.fSlope), //Not used, remove?
fPinNoise(d.fPinNoise),
+ fTimeDelay(d.fTimeDelay),
fTimeResolution(d.fTimeResolution),
// fTimeThreshold(d.fTimeThreshold), //Not used, remove?
// fTimeSignalLength(d.fTimeSignalLength), //Not used, remove?
// fPedestal(0), //Not used, remove?
// fSlope(0.), //Not used, remove?
fPinNoise(0.),
+ fTimeDelay(0.),
fTimeResolution(0.),
// fTimeThreshold(0), //Not used, remove?
// fTimeSignalLength(0), //Not used, remove?
for(absID = 0; absID < nEMC; absID++){ // Nov 30, 2006 by PAI; was from 1 to nEMC
Float_t energy = 0 ;
// amplitude set to zero, noise will be added later
- new((*digits)[absID]) AliEMCALDigit( -1, -1, absID, 0, TimeOfNoise() ); // absID-1->absID
+ new((*digits)[absID]) AliEMCALDigit( -1, -1, absID, 0., TimeOfNoise(),kFALSE); // absID-1->absID
//look if we have to add signal?
digit = dynamic_cast<AliEMCALDigit *>(digits->At(absID)); // absID-1->absID
//Follow PHOS and comment out this timing model til a better one
//can be developed - JLK 28-Apr-2008
- //Float_t a = digit->GetAmp() ;
+ //Float_t a = digit->GetAmplitude() ;
//Float_t b = TMath::Abs( a /fTimeSignalLength) ;
//Mark the beginning of the signal
//new((*ticks)[contrib++]) AliEMCALTick(digit->GetTime(),0, b);
// Calculate time as time of the largest digit
Float_t time = digit->GetTime() ;
- Float_t aTime= digit->GetAmp() ;
+ Float_t aTime= digit->GetAmplitude() ;
// loop over input
for(i = 0; i< fInput ; i++){ //loop over (possible) merge sources
curSDigit->ShiftPrimary(primaryoffset) ;
//Remove old timing model - JLK 28-April-2008
- //a = curSDigit->GetAmp() ;
+ //a = curSDigit->GetAmplitude() ;
//b = a /fTimeSignalLength ;
//new((*ticks)[contrib++]) AliEMCALTick(curSDigit->GetTime(),0, b);
//new((*ticks)[contrib++]) AliEMCALTick(curSDigit->GetTime()+fTimeSignalLength, -a, -b);
- if(curSDigit->GetAmp()>aTime) {
- aTime = curSDigit->GetAmp();
+ if(curSDigit->GetAmplitude()>aTime) {
+ aTime = curSDigit->GetAmplitude();
time = curSDigit->GetTime();
}
}
}
//Here we convert the summed amplitude to an energy in GeV
- energy = sDigitizer->Calibrate(digit->GetAmp()) ; // GeV
+ energy = sDigitizer->Calibrate(digit->GetAmplitude()) ; // GeV
// add fluctuations for photo-electron creation
energy *= static_cast<Float_t>(gRandom->Poisson(fMeanPhotonElectron)) / static_cast<Float_t>(fMeanPhotonElectron) ;
//Now digitize the energy according to the sDigitizer method,
//which merely converts the energy to an integer. Later we will
//check that the stored value matches our allowed dynamic ranges
- digit->SetAmp(sDigitizer->Digitize(energy)) ;
+ digit->SetAmplitude(sDigitizer->Digitize(energy)) ;
AliDebug(10,Form(" absID %5i energy %f nextSig %5i\n",
absID, energy, nextSig));
} // for(absID = 0; absID < nEMC; absID++)
for(i = 0 ; i < nEMC ; i++){
digit = dynamic_cast<AliEMCALDigit*>( digits->At(i) ) ;
//First get the energy in GeV units.
- energy = sDigitizer->Calibrate(digit->GetAmp()) ;
+ energy = sDigitizer->Calibrate(digit->GetAmplitude()) ;
//Then digitize using the calibration constants of the ocdb
- Int_t ampADC = DigitizeEnergy(energy, digit->GetId()) ;
- //if(ampADC>2)printf("Digit energy %f, amp %d, amp cal %d, threshold %d\n",energy,digit->GetAmp(),ampADC,fDigitThreshold);
+ Float_t ampADC = DigitizeEnergy(energy, digit->GetId()) ;
+ //if(ampADC>2)printf("Digit energy %f, amp %d, amp cal %d, threshold %d\n",energy,digit->GetAmplitude(),ampADC,fDigitThreshold);
if(ampADC < fDigitThreshold)
digits->RemoveAt(i) ;
else
for (i = 0 ; i < ndigits ; i++) {
digit = dynamic_cast<AliEMCALDigit *>( digits->At(i) ) ;
digit->SetIndexInList(i) ;
- energy = sDigitizer->Calibrate(digit->GetAmp()) ;
- digit->SetAmp(DigitizeEnergy(energy, digit->GetId()) ) ;
+ energy = sDigitizer->Calibrate(digit->GetAmplitude()) ;
+ digit->SetAmplitude(DigitizeEnergy(energy, digit->GetId()) ) ;
+ //Add delay to time
+ digit->SetTime(digit->GetTime()+fTimeDelay) ;
+ // printf("digit amplitude set at end: i %d, amp %f\n",i,digit->GetAmplitude());
}
}
// //_____________________________________________________________________
-Int_t AliEMCALDigitizer::DigitizeEnergy(Float_t energy, Int_t AbsId)
+Float_t AliEMCALDigitizer::DigitizeEnergy(Float_t energy, Int_t AbsId)
{
// JLK 26-June-2008
// Returns digitized value of the energy in a cell absId
Int_t nIeta = -1;
Int_t iphi = -1;
Int_t ieta = -1;
- Int_t channel = -999;
+ Float_t channel = -999;
Bool_t bCell = geom->GetCellIndex(AbsId, iSupMod, nModule, nIphi, nIeta) ;
if(!bCell)
fADCchannelEC = fCalibData->GetADCchannel(iSupMod,ieta,iphi);
}
- channel = static_cast<Int_t> (TMath::Ceil( (energy + fADCpedestalEC)/fADCchannelEC )) ;
-
+ //channel = static_cast<Int_t> (TMath::Floor( (energy + fADCpedestalEC)/fADCchannelEC )) ;
+ channel = (energy + fADCpedestalEC)/fADCchannelEC ;
+
if(channel > fNADCEC )
channel = fNADCEC ;
return channel ;
WriteDigits(digitsTRG);
+ (emcalLoader->TreeD())->Fill();
+
emcalLoader->WriteDigits( "OVERWRITE");
emcalLoader->WriteDigitizer("OVERWRITE");
}
}
}
+
+ delete [] timeSamples;
}
//____________________________________________________________________________
if (fPinNoise < 0.0001 )
Warning("InitParameters", "No noise added\n") ;
fDigitThreshold = simParam->GetDigitThreshold(); //fPinNoise * 3; // 3 * sigma
- fTimeResolution = simParam->GetTimeResolution(); //0.6e-9 ; // 600 psc
+ fTimeResolution = simParam->GetTimeResolution(); //0.6e-9 ; // 600 pc
+ fTimeDelay = simParam->GetTimeDelay(); //600e-9 ; // 600 ns
// These defaults are normally not used.
// Values are read from calibration database instead
fNADCEC = simParam->GetNADCEC();//(Int_t) TMath::Power(2,16) ; // number of channels in Tower ADC - 65536
- AliDebug(2,Form("Mean Photon Electron %d, Noise %f, E Threshold %f,Time Resolution %g,NADCEC %d",
+ AliDebug(2,Form("Mean Photon Electron %d, Noise %f, Digit Threshold %d,Time Resolution %g,NADCEC %d",
fMeanPhotonElectron,fPinNoise,fDigitThreshold,fTimeResolution,fNADCEC));
// Not used anymore, remove?
Int_t index ;
for (index = 0 ; index < digits->GetEntries() ; index++) {
digit = dynamic_cast<AliEMCALDigit *>(digits->At(index)) ;
- printf("\n%6d %8d %6.5e %4d %2d : ",
- digit->GetId(), digit->GetAmp(), digit->GetTime(), digit->GetIndexInList(), digit->GetNprimary()) ;
+ printf("\n%6d %8f %6.5e %4d %2d : ",
+ digit->GetId(), digit->GetAmplitude(), digit->GetTime(), digit->GetIndexInList(), digit->GetNprimary()) ;
Int_t iprimary;
for (iprimary=0; iprimary<digit->GetNprimary(); iprimary++) {
printf("%d ",digit->GetPrimary(iprimary+1) ) ;
else
treeD->Branch("EMCAL","TClonesArray",&digits,bufferSize);
//digitsBranch->SetTitle(fEventFolderName);
- treeD->Fill() ;
+
+// treeD->Fill() ;
/*
emcalLoader->WriteDigits("OVERWRITE");
emcalLoader->WriteDigitizer("OVERWRITE");
treeD->Branch(branchName,"TClonesArray",&digits,bufferSize);
}
- treeD->Fill();
+// treeD->Fill();
}
//__________________________________________________________________