X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ITS%2FAliITSresponseSDD.cxx;h=43167b9d0f107ee778f8fe022eded7bb4e2a8273;hb=362c9d61708912a81d77cb017e1d05fd1f9486a6;hp=c6d6049c1413fe843bb0c257547853c7fb3b9294;hpb=be33dccb804ba6b0bc047c6ff860bc71f1afa3ef;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/AliITSresponseSDD.cxx b/ITS/AliITSresponseSDD.cxx index c6d6049c141..43167b9d0f1 100644 --- a/ITS/AliITSresponseSDD.cxx +++ b/ITS/AliITSresponseSDD.cxx @@ -1,6 +1,6 @@ /************************************************************************** * 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. * * * @@ -13,97 +13,108 @@ * provided "as is" without express or implied warranty. * **************************************************************************/ -#include - -#include "AliITSgeom.h" #include "AliITSresponseSDD.h" -#include "AliITS.h" -#include "AliRun.h" +////////////////////////////////////////////////////// +// Base response class forITS // +// It is used to set static data members // +// connected to parameters equal for all // +// the modules // +// // +// // +////////////////////////////////////////////////////// + + +const Int_t AliITSresponseSDD::fgkMaxAdcDefault = 1024; +const Double_t AliITSresponseSDD::fgkDynamicRangeDefault = 132.; +const Double_t AliITSresponseSDD::fgkfChargeLossDefault = 0; +const Float_t AliITSresponseSDD::fgkDiffCoeffDefault = 3.23; +const Float_t AliITSresponseSDD::fgkDiffCoeff1Default = 30.; +const TString AliITSresponseSDD::fgkParam1Default = "same"; +const TString AliITSresponseSDD::fgkParam2Default = "same"; +const TString AliITSresponseSDD::fgkOptionDefault = "1D"; +const Double_t AliITSresponseSDD::fgkDriftSpeedDefault = 7.3; +const Double_t AliITSresponseSDD::fgkNsigmasDefault = 3.; +const Int_t AliITSresponseSDD::fgkNcompsDefault = 121; + +ClassImp(AliITSresponseSDD) + +//_________________________________________________________________________ +AliITSresponseSDD::AliITSresponseSDD():AliITSresponse(){ + // default constructor + fGaus = 0; + SetMaxAdc(fgkMaxAdcDefault); + SetDiffCoeff(fgkDiffCoeffDefault,fgkDiffCoeff1Default); + SetDriftSpeed(fgkDriftSpeedDefault); + SetNSigmaIntegration(fgkNsigmasDefault); + SetNLookUp(fgkNcompsDefault); -class AliITS; + SetJitterError(); + SetElectronics(); + SetDynamicRange(fgkDynamicRangeDefault); + SetChargeLoss(fgkfChargeLossDefault); + SetParamOptions(fgkParam1Default.Data(),fgkParam2Default.Data()); + SetZeroSupp(fgkOptionDefault); + SetDo10to8(); + SetOutputOption(); +} -//___________________________________________ -ClassImp(AliITSresponseSDD) -AliITSresponseSDD::AliITSresponseSDD() -{ - // constructor - SetMaxAdc(); - SetDiffCoeff(); - SetQref(); - SetDriftSpeed(); - // SetClock(); - SetNoiseParam(); - SetMagicValue(); - SetMinVal(); - SetParamOptions(); - SetZeroSupp(); - SetDataType(); - SetFilenames(); - SetOutputOption(); +//______________________________________________________________________ +AliITSresponseSDD::~AliITSresponseSDD() { + if(fGaus) delete fGaus; } -//__________________________________________________________________________ -AliITSresponseSDD::AliITSresponseSDD(const AliITSresponseSDD &source){ - // Copy Constructor - Int_t i; - if(&source == this) return; - for(i=0;i<8;i++){this->fCPar[i] = source.fCPar[i];} - this->fNoise = source.fNoise; - this->fBaseline = source.fBaseline; - this->fTopValue = source.fTopValue; - this->fTemperature = source.fTemperature; - this->fDriftSpeed = source.fDriftSpeed; - this->fMaxAdc = source.fMaxAdc; - this->fDiffCoeff = source.fDiffCoeff; - this->fQref = source.fQref; - this->fZeroSuppFlag = source.fZeroSuppFlag; - this->fMinVal = source.fMinVal; - this->fWrite = source.fWrite; - this->fOption = source.fOption; - this->fParam1 = source.fParam1; - return; +//______________________________________________________________________ +AliITSresponseSDD::AliITSresponseSDD(const AliITSresponseSDD &ob) : AliITSresponse(ob) { + // Copy constructor + // Copies are not allowed. The method is protected to avoid misuse. + Error("AliITSresponseSDD","Copy constructor not allowed\n"); } -//_________________________________________________________________________ -AliITSresponseSDD& - AliITSresponseSDD::operator=(const AliITSresponseSDD &source) { - // Assignment operator - Int_t i; - if(&source == this) return *this; - for(i=0;i<8;i++){this->fCPar[i] = source.fCPar[i];} - this->fNoise = source.fNoise; - this->fBaseline = source.fBaseline; - this->fTopValue = source.fTopValue; - this->fTemperature = source.fTemperature; - this->fDriftSpeed = source.fDriftSpeed; - this->fMaxAdc = source.fMaxAdc; - this->fDiffCoeff = source.fDiffCoeff; - this->fQref = source.fQref; - this->fZeroSuppFlag = source.fZeroSuppFlag; - this->fMinVal = source.fMinVal; - this->fWrite = source.fWrite; - this->fOption = source.fOption; - this->fParam1 = source.fParam1; +//______________________________________________________________________ +AliITSresponseSDD& AliITSresponseSDD::operator=(const AliITSresponseSDD& /* ob */){ + // Assignment operator + // Assignment is not allowed. The method is protected to avoid misuse. + Error("= operator","Assignment operator not allowed\n"); return *this; } -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]); - - } +//______________________________________________________________________ +Int_t AliITSresponseSDD::Convert8to10(Int_t signal) const { + // Undo the lossive 10 to 8 bit compression. + // code from Davide C. and Albert W. + + if(Do10to8()){ // kTRUE if the compression is active + if (signal < 0 || signal > 255) { + Warning("Convert8to10","out of range signal=%d",signal); + return 0; + } // end if signal <0 || signal >255 + + if (signal < 128) return signal; + if (signal < 192) { + if (TMath::Odd(signal)) return (128+((signal-128)<<1)); + else return (128+((signal-128)<<1)+1); + } // end if signal < 192 + if (signal < 224) { + if (TMath::Odd(signal)) return (256+((signal-192)<<3)+3); + else return (256+((signal-192)<<3)+4); + } // end if signal < 224 + if (TMath::Odd(signal)) return (512+((signal-224)<<4)+7); + return (512+((signal-224)<<4)+8); + } + else { + return signal; + } } -void AliITSresponseSDD::GiveCompressParam(Int_t cp[8]) -{ - // give compression param - Int_t i; - for(i=0; i<8; i++) { - cp[i]=fCPar[i]; - } + +//________________________________________________________________________ +void AliITSresponseSDD::SetNLookUp(Int_t p1){ + // Set number of sigmas over which cluster disintegration is performed + fNcomps=p1; + fGaus = new TArrayF(fNcomps+1); + for(Int_t i=0; i<=fNcomps; i++) { + Double_t x = -fNsigmas + (2.*i*fNsigmas)/(fNcomps-1); + (*fGaus)[i] = exp(-((x*x)/2)); + } }