/* $Id$ */
+/*
+ Class for creating of the sumable digits and digits from MC data
+ //
+ The input : ideal signals (Hits->Diffusion->Attachment -Ideal signal)
+ The output: raw digits
+
+ Effect implemented:
+ 1. Pad by pad gain map
+ 2. Noise map
+ 3. The dead channels identified - zerro noise for corresponding pads
+ In this case the outpu equal zerro
+
+*/
+
+
+
+
#include <stdlib.h>
#include <TTree.h>
#include <TObjArray.h>
#include "AliPDG.h"
#include "AliRunDigitizer.h"
#include "AliSimDigits.h"
+#include "AliLog.h"
+#include "AliTPCcalibDB.h"
+#include "AliTPCCalPad.h"
+#include "AliTPCCalROC.h"
ClassImp(AliTPCDigitizer)
//___________________________________________
-AliTPCDigitizer::AliTPCDigitizer() :AliDigitizer()
+ AliTPCDigitizer::AliTPCDigitizer() :AliDigitizer(),fDebug(0)
{
+ //
// Default ctor - don't use it
- fDebug =0;
+//
+
}
//___________________________________________
AliTPCDigitizer::AliTPCDigitizer(AliRunDigitizer* manager)
- :AliDigitizer(manager)
+ :AliDigitizer(manager),fDebug(0)
{
+ //
// ctor which should be used
- fDebug =0;
- if (GetDebug()>2)
- cerr<<"AliTPCDigitizer::AliTPCDigitizer"
- <<"(AliRunDigitizer* manager) was processed"<<endl;
+//
+ AliDebug(2,"(AliRunDigitizer* manager) was processed");
}
//------------------------------------------------------------------------
param->SetZeroSup(2);
Int_t zerosup = param->GetZeroSup();
+ AliTPCCalPad * gainTPC = AliTPCcalibDB::Instance()->GetPadGainFactor();
+ AliTPCCalPad * noiseTPC = AliTPCcalibDB::Instance()->GetPadNoise();
//
//Loop over segments of the TPC
cerr<<"AliTPC warning: invalid segment ID ! "<<segmentID<<endl;
continue;
}
-
+ AliTPCCalROC * gainROC = gainTPC->GetCalROC(sec); // pad gains per given sector
+ AliTPCCalROC * noiseROC = noiseTPC->GetCalROC(sec); // noise per given sector
digrow->SetID(segmentID);
Int_t nrows = 0;
ptr[i]++;
}
q/=16.; //conversion factor
+ Float_t gain = gainROC->GetValue(row,elem/nrows); // get gain for given - pad-row pad
+ if (gain<0.5){
+ printf("problem\n");
+ }
+ q*= gain;
+ Float_t noisePad = noiseROC->GetValue(row,elem/nrows);
// Float_t noise = gRandom->Gaus(0,param->GetNoise()*param->GetNoiseNormFac());
Float_t noise = pTPC->GetNoise();
- q+=noise;
+ q+=noise*noisePad;
+ if (noisePad<0.001) q=0; // dead channels identified - 0 noise
q=TMath::Nint(q);
if (q > zerosup)
{
- if(q > param->GetADCSat()) q = (Short_t)(param->GetADCSat());
+ if(q >= param->GetADCSat()) q = (Short_t)(param->GetADCSat() - 1);
//digrow->SetDigitFast((Short_t)q,rows,col);
*pdig1 =Short_t(q);
for (Int_t tr=0;tr<3;tr++)
Int_t zerosup = param->GetZeroSup();
//Loop over segments of the TPC
+ AliTPCCalPad * gainTPC = AliTPCcalibDB::Instance()->GetPadGainFactor();
+ AliTPCCalPad * noiseTPC = AliTPCcalibDB::Instance()->GetPadNoise();
for (Int_t n=0; n<nentries; n++) {
rl = AliRunLoader::GetRunLoader(fManager->GetInputFolderName(0));
gime = rl->GetLoader("TPCLoader");
digarr[0]->ExpandBuffer();
digarr[0]->ExpandTrackBuffer();
-
+
+
for (Int_t i=1;i<nInputs; i++){
// fManager->GetInputTreeTPCS(i)->GetEntryWithIndex(digarr[0]->GetID(),digarr[0]->GetID());
rl = AliRunLoader::GetRunLoader(fManager->GetInputFolderName(i));
continue;
}
+ AliTPCCalROC * gainROC = gainTPC->GetCalROC(sec); // pad gains per given sector
+ AliTPCCalROC * noiseROC = noiseTPC->GetCalROC(sec); // noise per given sector
digrow->SetID(digarr[0]->GetID());
Int_t nrows = digarr[0]->GetNRows();
}
q/=16.; //conversion factor
// Float_t noise = gRandom->Gaus(0,param->GetNoise()*param->GetNoiseNormFac());
+ Float_t gain = gainROC->GetValue(row,col);
+ q*= gain;
+ Float_t noisePad = noiseROC->GetValue(row, col);
+
Float_t noise = pTPC->GetNoise();
- q+=noise;
+ q+=noise*noisePad;
+ if (noisePad<0.00001) q=0; // dead channels identified - 0 noise
+
q=TMath::Nint(q);
if (q > zerosup){
- if(q > param->GetADCSat()) q = (Short_t)(param->GetADCSat());
+ if(q >= param->GetADCSat()) q = (Short_t)(param->GetADCSat() - 1);
digrow->SetDigitFast((Short_t)q,rows,col);
// *pdig1 =Short_t(q);
for (Int_t tr=0;tr<3;tr++){