AliVZEROdigit* fVZERODigit = (AliVZEROdigit*) VZEROdigits->At(k);
Int_t ADC = fVZERODigit->ADC();
Int_t cell = fVZERODigit->CellNumber();
+ Int_t ToF = fVZERODigit->ToF();
if(fVerbose == 1) { cout <<"DDL: "<<fileName<< "\tdigit number: "<< k<<"\tcell: "
- <<cell<<"\tADC: "<< ADC << endl;}
+ <<cell<<"\tADC: "<< ADC << "\tToF: "<< ToF << endl;}
if(fVerbose == 2) {
ftxt<<"DDL: "<<fileName<< "\tdigit number: "<< k<<"\tcell: "
<<cell<<"\tADC: "<< ADC << endl;
}
- buffer->WriteBinary(cell, ADC);
+ buffer->WriteBinary(cell, ADC, ToF);
}
if(fVerbose==2) ftxt.close();
}
}
//_____________________________________________________________________________
-void AliVZEROBuffer::WriteBinary(Int_t cell,Int_t ADC){
+void AliVZEROBuffer::WriteBinary(Int_t cell,Int_t ADC, Int_t ToF){
// It writes VZERO digits as a raw data file.
// Being called by AliVZERODDL.C
struct DataFile{
Int_t cell;
Int_t ADC;
+ Int_t ToF;
};
DataFile data;
data.cell = cell;
data.ADC = ADC;
+ data.ToF = ToF;
ofstream ftxt;
ftxt.open("VZEROdigits.txt",ios::app);
virtual ~AliVZEROBuffer(); //destructor
AliVZEROBuffer(const AliVZEROBuffer &source); // copy constructor
AliVZEROBuffer& operator=(const AliVZEROBuffer &source); // ass. op.
- void WriteBinary(Int_t cell,Int_t ADC);
+ void WriteBinary(Int_t cell,Int_t ADC, Int_t ToF);
UInt_t GetDigNumber()const{return fNumberOfDigits;}
void SetVerbose(Int_t val){fVerbose=val;}
Int_t GetVerbose() const{return fVerbose;}
// constructor
fNdigits = 0;
- fDigits = 0 ;
+ fDigits = 0;
fPhotoCathodeEfficiency = 0.18;
fPMVoltage = 768.0;
// Creates digits from hits
//
- fNdigits = 0;
- Int_t map[96];
- Float_t cPM = fPhotoCathodeEfficiency * fPMGain;
+ Int_t adc[96];
+ Float_t time[96];
+ fNdigits = 0;
+ Float_t cPM = fPhotoCathodeEfficiency * fPMGain;
- for(Int_t i=0; i<96; i++) map[i] = 0;
-
AliRunLoader* outRunLoader =
AliRunLoader::GetRunLoader(fManager->GetOutputFolderName());
if (!outRunLoader) {
Error("Exec", "Cannot get TreeH for input %d", iInput);
continue;
}
+
+ Float_t timeV0 = 1e12;
+ for(Int_t i=0; i<96; i++) { adc[i] = 0; time[i] = 0.0; }
+
TClonesArray* hits = vzero->Hits();
// Now makes Digits from hits
AliVZEROhit* hit = (AliVZEROhit *)hits->UncheckedAt(iHit);
Int_t nPhot = hit->Nphot();
Int_t cell = hit->Cell();
- map[cell] += nPhot;
+ adc[cell] += nPhot;
+ Float_t dt_scintillator = gRandom->Gaus(0,1);
+ time[cell] = dt_scintillator + 1e9*hit->Tof();
+ if(time[cell] < timeV0) timeV0 = time[cell];
} // hit loop
} // track loop
loader->UnloadHits();
} // input loop
-
- for (Int_t i=0; i<96; i++) {
- Float_t q1 = Float_t ( map[i] )* cPM * kQe;
- Float_t noise = gRandom->Gaus(10.5,3.22);
- Float_t pmResponse = q1/kC*TMath::Power(ktheta/kthau,1/(1-ktheta/kthau))
+
+ for (Int_t i=0; i<96; i++) {
+ Float_t q1 = Float_t ( adc[i] )* cPM * kQe;
+ Float_t noise = gRandom->Gaus(10.5,3.22);
+ Float_t pmResponse = q1/kC*TMath::Power(ktheta/kthau,1/(1-ktheta/kthau))
+ noise*1e-3;
- map[i] = Int_t( pmResponse * 200.0);
- if(map[i] > 3) {
-// printf(" Event, cell, adc = %d %d %d\n", outRunLoader->GetEventNumber(),i, map[i]);
- AddDigit(i, map[i]);
+ adc[i] = Int_t( pmResponse * 50.0);
+ if(adc[i] > 0) {
+// printf(" Event, cell, adc, tof = %d %d %d %f\n",
+// outRunLoader->GetEventNumber(),i, adc[i], time[i]*100.0);
+ AddDigit(i, adc[i], int(time[i]*100.0) );
}
+
}
treeD->Fill();
}
//____________________________________________________________________________
-void AliVZERODigitizer::AddDigit(Int_t cellnumber, Int_t adc)
+void AliVZERODigitizer::AddDigit(Int_t cellnumber, Int_t adc, Int_t tof)
{
// Adds Digit
TClonesArray &ldigits = *fDigits;
- new(ldigits[fNdigits++]) AliVZEROdigit(cellnumber,adc);
+ new(ldigits[fNdigits++]) AliVZEROdigit(cellnumber,adc,tof);
}
//____________________________________________________________________________
void AliVZERODigitizer::ResetDigit()
virtual Bool_t Init();
virtual void Exec(Option_t* option=0);
- void AddDigit(Int_t cellnumber, Int_t adc);
+ void AddDigit(Int_t cellnumber, Int_t adc, Int_t tof);
void ResetDigit();
private:
{
fCellNumber = 0;
fADC = 0;
+ fToF = 0;
}
AliVZEROdigit::AliVZEROdigit(Int_t* tracks, Int_t *digits):
fEvent = digits[0];
}
-AliVZEROdigit::AliVZEROdigit(Int_t cellnumber, Int_t adc)
+AliVZEROdigit::AliVZEROdigit(Int_t cellnumber, Int_t adc, Int_t tof)
{
fCellNumber = cellnumber;
fADC = adc;
+ fToF = tof;
}
public:
AliVZEROdigit();
AliVZEROdigit(Int_t* tracks, Int_t* digits);
- AliVZEROdigit(Int_t /* cellnumber */, Int_t /* adc */);
+ AliVZEROdigit(Int_t /* cellnumber */, Int_t /* adc */, Int_t /* tof */);
virtual ~AliVZEROdigit() {};
Int_t CellNumber() const {return fCellNumber;}
Int_t ADC() const {return fADC;}
+ Int_t ToF() const {return fToF;}
private:
Int_t fTrack; // Track number
Int_t fEvent; // Event number
Int_t fCellNumber; // Scintillator cell number
Int_t fADC; // ADC response
+ Int_t fToF; // Time of Flight
ClassDef(AliVZEROdigit,1) //Digit (Header) object for set : VZERO
};