X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=ITS%2FAliITSsimulationSDD.h;h=641c4fe20a0a87ae7a138bd07102b51a94421c73;hb=4b2bc572b7badd9eb57b3d261dd2d4aca087e897;hp=bae73d1de013a0b462ad25eab898b2561027c4ca;hpb=e8d02863afdd1db4bc9b2816ac38300565f4d8f3;p=u%2Fmrichter%2FAliRoot.git diff --git a/ITS/AliITSsimulationSDD.h b/ITS/AliITSsimulationSDD.h index bae73d1de01..641c4fe20a0 100644 --- a/ITS/AliITSsimulationSDD.h +++ b/ITS/AliITSsimulationSDD.h @@ -3,6 +3,7 @@ /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * See cxx source for full Copyright notice */ + /* $Id$ */ //////////////////////////////////////////////////////////// @@ -10,10 +11,8 @@ //////////////////////////////////////////////////////////// #include -#include - #include "AliITSsimulation.h" - +#include "AliITSsegmentationSDD.h" class TH1F; class TFile; class TArrayI; @@ -24,22 +23,18 @@ class AliITSMap; class AliITSMapA1; class AliITSMapA2; class AliITSetfSDD; -class AliITSsegmentationSDD; -class AliITSInStream; -class AliITSresponse; -class AliITSresponseSDD; +class AliITSCalibration; +class AliITSCalibrationSDD; class AliITSsimulationSDD : public AliITSsimulation { public: AliITSsimulationSDD(); // default constructor //Standard Constructor AliITSsimulationSDD(AliITSDetTypeSim* dettyp); - // Copy opporator - AliITSsimulationSDD(AliITSsimulationSDD &source); + virtual ~AliITSsimulationSDD(); // Destructor - // = opporator - AliITSsimulationSDD& operator=(const AliITSsimulationSDD &source); - virtual AliITSsimulation& operator=(const AliITSsimulation &source); + + // virtual AliITSsimulation& operator=(const AliITSsimulation &source); // Initilize variables for this simulation void Init(); @@ -48,9 +43,8 @@ class AliITSsimulationSDD : public AliITSsimulation { // set pointer to segmentation object virtual void SetSegmentationModel(Int_t /*dt*/, AliITSsegmentation *seg){fDetType->SetSegmentationModel(1,seg);} - // set the scale size factor for the smples in FFT - virtual void SetScaleFourier(Int_t scale=4) {fScaleSize=scale;} - Int_t ScaleFourier() const {return fScaleSize;} // returns the scale factor + static Int_t ScaleFourier(const AliITSsegmentationSDD* seg) + {if(seg->Npx()==128) {return 8;} else {return 4;}} // returns the scale factor // set perpendicular tracks flag virtual void SetPerpendTracksFlag(Bool_t flag=kFALSE) {fFlag=flag;} // returns perpendicular track flag. @@ -59,40 +53,18 @@ class AliITSsimulationSDD : public AliITSsimulation { virtual void SetCrosstalkFlag(Bool_t flag=kFALSE) {fCrosstalkFlag=flag;} // return crosstalk flag Bool_t CrosstalkFlag() const {return fCrosstalkFlag;} - // set compression parameters for 2D or 1D via response functions - void SetCompressParam(); - // retrieve compression parameters for 2D or 1D - void CompressionParam(Int_t i, Int_t &db, Int_t &tl, Int_t &th); - // retrieve compression parameters for 2D or 1D - void CompressionParam(Int_t i, Int_t &db, Int_t &tl); - + void FastFourierTransform(Double_t *real, Double_t *imag, Int_t direction); virtual Int_t Convert10to8(Int_t signal) const;//10 to 8 bit SDD compresion - virtual void ZeroSuppression(const char *opt); // Apply zero suppresion - virtual void Init2D(); // initiilzes 2D compresion algorithm + virtual Int_t Convert8to10(Int_t signal) const;//8 to 10 bit decompresion virtual void Compress2D(); // Applies 2D compresion algorithm - virtual void Init1D(); // initilizes 1D compresion algorithm - virtual void Compress1D(); // Applies 1D compresion algorithm virtual void StoreAllDigits(); // if No compresion run this. - virtual void ReadBaseline(); // read baseline values from a file // returns baseline and noise for a given anode i. - virtual void GetAnodeBaseline(Int_t i,Double_t &baseline,Double_t &noise) const; + //virtual void GetAnodeBaseline(Int_t i,Double_t &baseline,Double_t &noise) const; // local implementation of ITS->AddDigit. Specific for SDD - virtual void AddDigit(Int_t i, Int_t j, Int_t signal); - // Finds clulsters of signals. Use with regards to Compresion algorithms - virtual void FindCluster(Int_t i, Int_t j,Int_t signal, - Int_t minval,Bool_t &cond); - - // get parameters for 1D - this could be changed when we get more - // input from Torino after they have a look at the code - virtual Int_t Tolerance(Int_t i) const {return fTol[i];}//returns tolerance - virtual Int_t Disable(Int_t i) const {return fT2[i];}//high threshold 2D - // Set the output file name - for 1D encoding - virtual void SetFileName(const char *filnam) {fFileName=filnam;} - - // add baseline, noise, electronics and ADC saturation effects - void ChargeToSignal(Int_t mod,Bool_t bAddNoise=kFALSE); - // add dead channels - void ApplyDeadChannels(Int_t mod); + virtual void AddDigit(Int_t i, Int_t j, Int_t signalc, Int_t signale); + + // add baseline, noise, gain, electronics and ADC saturation effects + void ChargeToSignal(Int_t mod,Bool_t bAddNoise=kFALSE, Bool_t bAddGain=kTRUE); // add crosstalk effect void ApplyCrosstalk(Int_t mod); @@ -129,22 +101,10 @@ class AliITSsimulationSDD : public AliITSsimulation { void ResetHistograms(); // Get the pointer to the array of histograms TObjArray* GetHistArray() {return fHis;} - // create a separate tree for background monitoring (2D) - virtual void MakeTreeB(Option_t *option="B") - { if(strstr(option,"B")) - fTreeB = new TNtuple("ntuple", "2D backgr","nz:nl:nh:low:anode");} - // presently a dummy routine use TreeB() instead - void GetTreeB(Int_t) { } - // Return pointer to TreeB - TNtuple *TreeB() {return fTreeB;} void WriteToFile(TFile *fp);// Writes the histograms to a file // Get's histogram of a particular anode. TH1F *GetAnode(Int_t wing, Int_t anode); - // Sets the check noise flag. - void SetCheckNoise(Bool_t check=kFALSE) {fCheckNoise=check;} - // Returns the noise value - Float_t GetNoise(); // sets DoFFT value. void SetDoFFT(Int_t doFFT=1) {fDoFFT=doFFT;} @@ -152,12 +112,15 @@ class AliITSsimulationSDD : public AliITSsimulation { virtual void PrintStatus() const; private: + AliITSsimulationSDD(const AliITSsimulationSDD &source); + AliITSsimulationSDD& operator=(const AliITSsimulationSDD &source); + + // virtual void GetBaseline(Int_t mod); // read baseline values from a file // Variables and pointers for local use only. Not Streamed out. AliITS *fITS; //! local pointer to ITS AliITSMapA2 *fHitMap2; //! local pointer to map of signals AliITSMapA2 *fHitSigMap2; //! local pointer to map of signals AliITSMapA2 *fHitNoiMap2; //! local pointer to map of signals - AliITSInStream *fStream; //! input file stream AliITSetfSDD *fElectronics; //! local pointer to electronics simulation Double_t *fInZR; //! [fScaleSize*fMaxNofSamples] input of the // real part of FFT @@ -170,24 +133,14 @@ class AliITSsimulationSDD : public AliITSsimulation { Bool_t *fAnodeFire; //! [#of anodes] Flag if there is a signal TObjArray *fHis; // just in case for histogramming - TArrayI fD; // decrease values for baseline eq. - TArrayI fT1; // low thresholds - TArrayI fT2; // high thresholds(2D) or disable (1D) - TArrayI fTol; // tolerance - TArrayF fBaseline; // Baseline - TArrayF fNoise; // Noise value - TNtuple *fTreeB; // Background info tree for 2D - TString fParam; // Compresion algorithm options - TString fFileName; // File name for possible options above Bool_t fFlag; // Flag used to simulate perpendicular tracks - Bool_t fCheckNoise; // Flag used to check the simulated noise Bool_t fCrosstalkFlag; // Flag used to apply the crosstalk effect Int_t fDoFFT; // Flag used to switch off electronics when 0 Int_t fNofMaps; // Number of anodes used ( 1-2*nanodes per wing ) Int_t fMaxNofSamples;// Number of time samples Int_t fScaleSize; // scale size factor for the samples in FFT - ClassDef(AliITSsimulationSDD,1) // Simulation of SDD clusters + ClassDef(AliITSsimulationSDD,3) // Simulation of SDD clusters }; #endif