/**************************************************************************
* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * *
+ * *
* Author: The ALICE Off-line Project. *
* Contributors are mentioned in the code where appropriate. *
* *
* provided "as is" without express or implied warranty. *
**************************************************************************/
-#include <TString.h>
-
-#include "AliITSresponseSDD.h"
-
-
-//___________________________________________
-ClassImp(AliITSresponseSDD)
-
-AliITSresponseSDD::AliITSresponseSDD()
-{
- // constructor
- SetMaxAdc();
- SetDiffCoeff();
- SetDriftSpeed();
- SetNSigmaIntegration();
- SetNLookUp();
- // SetClock();
- SetNoiseParam();
- SetNoiseAfterElectronics();
- SetElectronics();
- SetDynamicRange();
- SetChargeLoss();
- SetMinVal();
- SetParamOptions();
- SetZeroSupp();
- SetDataType();
- SetFilenames();
- SetOutputOption();
- SetDo10to8();
- // set the default zero suppression parameters
- fCPar[0]=0;
- fCPar[1]=0;
- fCPar[2]=(Int_t)(fBaseline + 2.*fNoiseAfterEl);
- fCPar[3]=(Int_t)(fBaseline + 2.*fNoiseAfterEl);
- fCPar[4]=0;
- fCPar[5]=0;
- fCPar[6]=0;
- fCPar[7]=0;
-}
+/* $Id$ */
-AliITSresponseSDD::~AliITSresponseSDD() {
+//////////////////////////////////////////////////////
+// Base response class forITS //
+// It is used to set static data members //
+// connected to parameters equal for all //
+// the modules //
+// //
+// //
+//////////////////////////////////////////////////////
- if(fGaus) delete fGaus;
+#include <TMath.h>
+#include "AliITSresponseSDD.h"
+#include <AliITSgeomTGeo.h>
+
+const Float_t AliITSresponseSDD::fgkTimeOffsetDefault = 54.30;
+const Float_t AliITSresponseSDD::fgkADC2keVDefault = 3.34;
+const Float_t AliITSresponseSDD::fgkChargevsTimeDefault = 0.00355;
+const Float_t AliITSresponseSDD::fgkCarlosRXClockPeriod = 25.;
+ClassImp(AliITSresponseSDD)
+
+//_________________________________________________________________________
+AliITSresponseSDD::AliITSresponseSDD():
+TObject(),
+fTimeOffset(fgkTimeOffsetDefault),
+fADC2keV(fgkADC2keVDefault),
+fChargevsTime(fgkChargevsTimeDefault){
+ // default constructor
+ for(Int_t i=0; i<kNSDDmods;i++){
+ fTimeZero[i]=fgkTimeOffsetDefault;
+ fDeltaVDrift[i]=0.;
+ }
}
-
-void AliITSresponseSDD::SetCompressParam(Int_t cp[8])
-{
- // set compression param
-
- Int_t i;
- for (i=0; i<8; i++) {
- fCPar[i]=cp[i];
- //printf("\n CompressPar %d %d \n",i,fCPar[i]);
-
+//_________________________________________________________________________
+void AliITSresponseSDD::SetHalfLadderATimeZero(Int_t lay, Int_t lad, Float_t tzero){
+ // Sets time Zero for all modules of a ladder on side A (Z>0)
+ Int_t minMod,maxMod;
+ if(lay==3){
+ minMod=1;
+ maxMod=3;
+ if(lad>kNLaddersLay3){
+ AliError(Form("Ladder number %d out of range",lad));
+ return;
}
-}
-void AliITSresponseSDD::GiveCompressParam(Int_t cp[8])
-{
- // give compression param
-
- Int_t i;
- for (i=0; i<8; i++) {
- cp[i]=fCPar[i];
+ }else if(lay==4){
+ minMod=1;
+ maxMod=4;
+ if(lad>kNLaddersLay4){
+ AliError(Form("Ladder number %d out of range",lad));
+ return;
}
+ }else{
+ AliError(Form("Layer number %d out of range",lay));
+ return;
+ }
+ for(Int_t iMod=minMod; iMod<=maxMod; iMod++){
+ Int_t modIndex=AliITSgeomTGeo::GetModuleIndex(lay,lad,iMod);
+ SetModuleTimeZero(modIndex,tzero);
+ }
}
-
-void AliITSresponseSDD::Print()
-{
- // Print SDD response Parameters
-
- cout << "**************************************************" << endl;
- cout << " Silicon Drift Detector Response Parameters " << endl;
- cout << "**************************************************" << endl;
- cout << "Diffusion Coefficients: " << fDiffCoeff << ", " << fDiffCoeff1 << endl;
-
- cout << "Hardware compression parameters: " << endl;
- for(Int_t i=0; i<8; i++) cout << "fCPar[" << i << "] = " << fCPar[i] << endl;
- cout << "Noise before electronics (arbitrary units): " << fNoise << endl;
- cout << "Baseline (ADC units): " << fBaseline << endl;
- cout << "Noise after electronics (ADC units): " << fNoiseAfterEl << endl;
-
- cout << "Dynamic Range: " << fDynamicRange << endl;
- cout << "Charge Loss: " << fChargeLoss << endl;
- cout << "Temperature: " << fTemperature << endl;
- cout << "Drift Speed: " << fDriftSpeed << endl;
- cout << "Electronics (1=PASCAL, 2=OLA): " << fElectronics << endl;
-
- cout << "N. of Sigma for signal integration: " << fNsigmas << endl;
- cout << "N. of bins in lookup table: " << fNcomps << endl;
-
- cout << "Max. ADC Value: " << fMaxAdc << endl;
- cout << "Min. Value: " << fMinVal << endl;
-
- cout << "**************************************************" << endl;
-
-
-
+//_________________________________________________________________________
+void AliITSresponseSDD::SetHalfLadderCTimeZero(Int_t lay, Int_t lad, Float_t tzero){
+ // Sets time Zero for all modules of a ladder on side C (Z<0)
+ Int_t minMod,maxMod;
+ if(lay==3){
+ minMod=4;
+ maxMod=6;
+ if(lad>kNLaddersLay3){
+ AliError(Form("Ladder number %d out of range",lad));
+ return;
+ }
+ }else if(lay==4){
+ minMod=5;
+ maxMod=8;
+ if(lad>kNLaddersLay4){
+ AliError(Form("Ladder number %d out of range",lad));
+ return;
+ }
+ }else{
+ AliError(Form("Layer number %d out of range",lay));
+ return;
+ }
+ for(Int_t iMod=minMod; iMod<=maxMod; iMod++){
+ Int_t modIndex=AliITSgeomTGeo::GetModuleIndex(lay,lad,iMod);
+ SetModuleTimeZero(modIndex,tzero);
+ }
}
-
-
-