X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TPC%2FAliTPCdataQA.h;h=41eda82722197af60e7b69515d9ae50609d06ada;hb=74ec05ba908645c1f2cbb1fd779b1f499c83b393;hp=7f4b5f1162e3b1d36e444d16d3f855881f2d6a03;hpb=c322f08a8364603574acbad5c482df7bd3fdb9ae;p=u%2Fmrichter%2FAliRoot.git diff --git a/TPC/AliTPCdataQA.h b/TPC/AliTPCdataQA.h index 7f4b5f1162e..41eda827221 100644 --- a/TPC/AliTPCdataQA.h +++ b/TPC/AliTPCdataQA.h @@ -6,7 +6,9 @@ #include +#include #include +#include "AliRecoParam.h" class TArrayF; class TH2F; @@ -14,111 +16,147 @@ class TTreeSRedirector; class AliTPCROC; class AliTPCCalROC; class AliTPCRawStream; +class AliTPCRawStreamV3; class AliTPCRawStreamFast; class AliRawReader; class AliTPCAltroMapping; -class AliTPCCalPad; +class AliTPCCalPad; +class TMap; struct eventHeaderStruct; class AliTPCdataQA : public TH1F { public: AliTPCdataQA(); + AliTPCdataQA(AliRecoParam::EventSpecie_t es); AliTPCdataQA(const AliTPCdataQA &ped); + AliTPCdataQA(const TMap *config); virtual ~AliTPCdataQA(); AliTPCdataQA& operator = (const AliTPCdataQA &source); - void DumpToFile(const Char_t *filename, const Char_t *dir="", const Bool_t append=kFALSE); + void DumpToFile(const Char_t *filename, const Char_t *dir="", Bool_t append=kFALSE); void MakeTree(const char *fname="QApad.root"); // Bool_t ProcessEventFast(AliTPCRawStreamFast *rawStreamFast); Bool_t ProcessEventFast(AliRawReader *rawReader); Bool_t ProcessEvent(AliTPCRawStream *rawStream); + Bool_t ProcessEvent(AliTPCRawStreamV3 *rawStreamV3); Bool_t ProcessEvent(AliRawReader *rawReader); + Bool_t ProcessEventOld(AliRawReader *rawReader); Bool_t ProcessEvent(eventHeaderStruct *event); - Int_t Update(const Int_t isector, const Int_t iRow, const Int_t iPad, - const Int_t iTimeBin, const Float_t signal); void Analyse(); // // void SetPedestal(AliTPCCalPad *pedestalCal){ fPedestal = pedestalCal;} void SetNoise(AliTPCCalPad *noiseCal){ fNoise = noiseCal;} - AliTPCCalPad *GetMaxCharge(){ return fMaxCharge;} - AliTPCCalPad *GetMeanCharge(){ return fMeanCharge;} - AliTPCCalPad *GetNoThreshold(){ return fNoThreshold;} - AliTPCCalPad *GetOverThreshold0(){ return fOverThreshold0;} - AliTPCCalPad *GetOverThreshold5(){ return fOverThreshold5;} - AliTPCCalPad *GetOverThreshold10(){ return fOverThreshold10;} - AliTPCCalPad *GetOverThreshold20(){ return fOverThreshold20;} - AliTPCCalPad *GetOverThreshold30(){ return fOverThreshold30;} + AliTPCCalPad *GetNoThreshold() const { return fNoThreshold;} + AliTPCCalPad *GetMaxCharge() const { return fMaxCharge;} + AliTPCCalPad *GetMeanCharge() const { return fMeanCharge;} + AliTPCCalPad *GetNLocalMaxima() const { return fNLocalMaxima;} + AliTPCCalPad *GetOverThreshold10() const { return fOverThreshold10;} + AliTPCCalPad *GetOverThreshold20() const { return fOverThreshold20;} + AliTPCCalPad *GetOverThreshold30() const { return fOverThreshold30;} + AliTPCCalPad *GetNTimeBins() const { return fNTimeBins;} + AliTPCCalPad *GetNPads() const { return fNPads;} + AliTPCCalPad *GetTimePosition() const { return fTimePosition;} + TProfile* GetHistQVsTimeSideA() const {return fHistQVsTimeSideA;} + TProfile* GetHistQVsTimeSideC() const {return fHistQVsTimeSideC;} + TProfile* GetHistQMaxVsTimeSideA() const {return fHistQMaxVsTimeSideA;} + TProfile* GetHistQMaxVsTimeSideC() const {return fHistQMaxVsTimeSideC;} + TH1F* GetHistOccupancyVsEventConst() const {return fHistOccupancyVsEvent;} + TH1F* GetHistNclustersVsEventConst() const {return fHistNclustersVsEvent;} + TH1F* GetHistOccupancyVsEvent(); + TH1F* GetHistNclustersVsEvent(); // AliTPCAltroMapping **GetAltroMapping() { return fMapping; }; void SetAltroMapping(AliTPCAltroMapping **mapp) { fMapping = mapp; }; // // - Int_t GetFirstTimeBin() const { return fFirstTimeBin; } - Int_t GetLastTimeBin() const { return fLastTimeBin; } - Int_t GetAdcMin() const { return fAdcMin; } - Int_t GetAdcMax() const { return fAdcMax; } + Int_t GetFirstTimeBin() const { return fFirstTimeBin; } + Int_t GetLastTimeBin() const { return fLastTimeBin; } + Int_t GetAdcMin() const { return fAdcMin; } + Int_t GetAdcMax() const { return fAdcMax; } + Int_t GetEventCounter() const { return fEventCounter; } + Bool_t GetIsAnalysed() const { return fIsAnalysed; } + Int_t GetMaxEvents() const { return fMaxEvents; } + Int_t GetEventsPerBin() const { return fEventsPerBin; } + Int_t GetSignalCounter() const { return fSignalCounter; } + Int_t GetClusterCounter() const { return fClusterCounter;} + void SetRangeTime(Int_t tMin, Int_t tMax){ fFirstTimeBin=tMin; fLastTimeBin=tMax;} // Set time bin range that is used for the pedestal calibration void SetRangeAdc (Int_t aMin, Int_t aMax){ fAdcMin=aMin; fAdcMax=aMax; } // Set adc range for the pedestal calibration - - void SetOldRCUformat(Bool_t format=kTRUE) { fOldRCUformat = format; } - + void SetMaxEvents (Int_t value) { fMaxEvents = value; } + void SetEventsPerBin(Int_t value) { fEventsPerBin = value; } private: - void UpdateSignalHistograms(const Int_t icsector, const Int_t icRow, - const Int_t icPad, const Int_t icTimeBin, - const Float_t signal); - - void MakeArrays(); // create arrays for random data acces - void CleanArrays(); // clean arrays for random data acces - Float_t* GetExpandDigit(Int_t row, Int_t pad, Int_t time); // get pointer to the digit - + Int_t Update(const Int_t iSector, const Int_t iRow, const Int_t iPad, + const Int_t iTimeBin, Float_t signal); + void FindLocalMaxima(const Int_t iSector); + + void MakeArrays(); // Create arrays for random data acces + void CleanArrays(); // Clean arrays for random data acces + void SetExpandDigit(const Int_t iRow, Int_t iPad, Int_t iTimeBin, + const Float_t signal); // Fill arrays with signals + void GetPadAndTimeBin(Int_t bin, Int_t& iPad, Int_t& iTimeBin); // Get pad and time bin corresponding to the 1d bin + Float_t GetQ(const Float_t* adcArray, const Int_t time, + const Int_t pad, const Int_t maxTimeBins, + Int_t& timeMin,Int_t& timeMax,Int_t& padMin,Int_t& padMax); + void UpdateEventHistograms(); + void UpdateEventHisto(TH1F* hist, Float_t average); + Int_t fFirstTimeBin; // First Time bin needed for analysis Int_t fLastTimeBin; // Last Time bin needed for analysis - Int_t fMaxTime; // Maximum number of time bins Int_t fAdcMin; // min adc channel of pedestal value Int_t fAdcMax; // max adc channel of pedestal value - Bool_t fOldRCUformat; //! Should we use the old RCU format for data reading - - AliTPCROC *fROC; //! ROC information AliTPCAltroMapping **fMapping; //! Altro Mapping object // // AliTPCCalPad * fPedestal; //! option to set pedestal cal object AliTPCCalPad * fNoise; //! option to set noise cal object + AliTPCCalPad * fNLocalMaxima; // local maximas found AliTPCCalPad * fMaxCharge; // max charge AliTPCCalPad * fMeanCharge; // mean charge AliTPCCalPad * fNoThreshold; // number of digits - AliTPCCalPad * fOverThreshold0; // number of digits over threshold - AliTPCCalPad * fOverThreshold5; // number of digits over threshold - AliTPCCalPad * fOverThreshold10; // number of digits over threshold - AliTPCCalPad * fOverThreshold20; // number of digits over threshold - AliTPCCalPad * fOverThreshold30; //! number of digits over threshold + AliTPCCalPad * fNTimeBins; // timebins width of cluster + AliTPCCalPad * fNPads; // pads with of cluster + AliTPCCalPad * fTimePosition; // Time position of local maximum + AliTPCCalPad * fOverThreshold10; //! local maxima with qMax over threshold + AliTPCCalPad * fOverThreshold20; //! local maxima with qMax over threshold + AliTPCCalPad * fOverThreshold30; //! local maxima with qMax over threshold + + TProfile* fHistQVsTimeSideA; // Q vs time (side A) + TProfile* fHistQVsTimeSideC; // Q vs time (side C) + TProfile* fHistQMaxVsTimeSideA; // QMax vs time (side A) + TProfile* fHistQMaxVsTimeSideC; // QMax vs time (side C) + + TH1F* fHistOccupancyVsEvent; // Occupancy vs event number (~time) + TH1F* fHistNclustersVsEvent; // Nclusters vs event number (~time) Int_t fEventCounter; // event Counter - Int_t fSectorLast; //! last sector with signal - Int_t fRowLast; //! last row with signal - Int_t fPadLast; //! last pad with signal - Int_t fTimeBinLast; //! last time bin with signal - Float_t fSignalLast; //! last signal value - Int_t fNAboveThreshold; //! number of signals above threshold + Bool_t fIsAnalysed; // Set to true after Analyse has been called + + Int_t fMaxEvents; // Max events for event histograms + Int_t fEventsPerBin; // Events per bin for event histograms + Int_t fSignalCounter; // Signal counter + Int_t fClusterCounter; // Cluster counter // // Expand buffer // Float_t** fAllBins; //! array for digit using random access Int_t** fAllSigBins; //! array of pointers to the indexes over threshold Int_t* fAllNSigBins; //! + Int_t fRowsMax; //! Maximum number of time bins + Int_t fPadsMax; //! Maximum number of time bins + Int_t fTimeBinsMax; //! Maximum number of time bins public: - ClassDef(AliTPCdataQA, 1) // Implementation of the TPC pedestal and noise calibration + ClassDef(AliTPCdataQA, 5) // Implementation of the TPC Raw QA };