]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TRD/AliTRDqaBlackEvents.h
Adding macros to create Calibration objects
[u/mrichter/AliRoot.git] / TRD / AliTRDqaBlackEvents.h
index 04d951b52955fd415698315958c8a7f04d9b5e18..02e167213f657661e52b369d0c8a8d8cfdd8e982 100644 (file)
 
 class TH1D;
 class TH2D;
-class TH3D;
-class AliTRDrawStreamTB;
+class TH2S;
+class TH3F;
+class TGraph;
+class TObjArray;
+class AliTRDrawStreamOld;
+class AliRawReader;
 
 class AliTRDqaBlackEvents : public TObject {
 
@@ -32,34 +36,174 @@ class AliTRDqaBlackEvents : public TObject {
 
   void Init();
   void Reset();
-  Int_t AddEvent(AliTRDrawStreamTB *data);
+  //Int_t AddEvent(AliTRDrawStream *data, AliRawReader *reader);
+
+  void StartEvent();
+  void AddBuffer(AliTRDrawStreamOld *data, AliRawReader * const reader);
+  void FinishEvent();
+
   void Process(const char* filename);
   
   //TH2D *GetChamberPedestal(Int_t sm, Int_t layer, Int_t stack) {return 0;}
-  TH2D *GetChamberPedestal(Int_t det) {return fChPed[det];}
+  TH2D *GetChamberPedestal(Int_t det) const {return fChPed[det];}
   
   //TH2D *GetChamberNoise(Int_t sm, Int_t layer, Int_t stack) {return 0;}
-  TH2D *GetChamberNoise(Int_t det) {return fChNoise[det];}
+  TH2D *GetChamberNoise(Int_t det) const {return fChNoise[det];}
   
   void SetNoiseLevel(Double_t min, Double_t max) {fMinNoise = min; fMaxNoise = max;}
+  void SetFitMethod(Int_t fit) {fFitType = fit;} 
+
+  void SetRefFile(const char *filename);
 
   void DrawChamber(const char *filename, Int_t det, Int_t w=700, Int_t h=400);
   //void ScanChamber(const char *filename, Int_t first, Int_t last);
   void DrawSm(const char *filename, Int_t sm, Int_t w=900, Int_t h=700);
 
+  void SetFullView(Int_t v, Int_t thresh, Int_t count) {
+    fCreateFull = v;
+    fThresh = thresh;
+    fCount = count;
+  }
+
  private:
+  
+  Int_t fnEvents;         // number of events processed  
+  Int_t fCreateFull;      // flag if to create a full view
+  Int_t fThresh;          // threshold to analyze MCM data
+  Int_t fCount;           // minimum number of entries above threshold
+  
+  Int_t fRefEv;           // reference event number
+
+  //Char_t fRefFileName[256];  // name of the file with reference distributions
+  const Char_t *fRefFileName;  // name of the file with reference distributions
+
+  // geometry constants 
+  enum {
+    kDET = 540,
+    kROB = 8,
+    kMCM = 16,
+    kADC = 21,
+    kTB  = 30,
+    kROW = 16,
+    kPAD = 144,
+    kSM  = 18,
+    kCH  = 50
+  };
+
+  // histograms per detector
+
+  TH1D *fOccupancy;       // how many times is a pad present in data
+  TH2D *fDetRob;          // detector -- read out board
+
+  // histograms per chamber
+
+  TH1D *fPed[kDET];        // reconstructed pedestals distribution (on hist per chamber)
+  TH1D *fNoise[kDET];      // reconstructed noise distribution (on hist per chamber)
+  TH1D *fChPP[kDET];       // peak to peak for each chamber
+  TH1D *fNPointDist[kDET]; // distributin of the number of points
+  TH2D *fChPed[kDET];      // Some histograms
+  TH2D *fChNoise[kDET];    // Some histograms
+  TH2D *fNPoint[kDET];     // number of data points
+  TH3F *fData[kDET];       // Some histograms
+  TH1D *fSignal[kDET];     // Some histograms
+  TH2D *fnEntriesRM[kDET];     // number of entries for ROB - MCM
+  TH1D *fnEntriesRMDist[kDET]; // distribtion of number of entries per ROB-MCM
+
+  // direct access to data
+  Float_t  fDataDirect[kDET][kROW][kPAD][kCH];  // data array
+  Double_t fSignalDirect[kDET][kCH]; // signal array
+
+  // after reference subtraction
+  TH2D *fChPedRes[kDET];    // histograms after reference subtraction
+  TH2D *fChNoiseRes[kDET];  // histograms after reference subtraction
+
+  TH2D *fTBEvent;    // coherent noise
+
+  TH2D *fRefHistPed;        // reference distributions
+  TH2D *fRefHistNoise;      // reference distributions
+
+  TH2S *fFullSignal[kDET*kROB*kMCM];     // one histogram per MCM  
+  Short_t fFullCounter[kDET*kROB*kMCM];  // counts a number of entries with high signal
+  
+  // error codes
+  TH1D *fErrorHC;          // number of errors HC
+  TH1D *fErrorMCM;         // number of errors MCM
+  TH1D *fErrorADC;         // number of errors ADC
+  
+  TH1D *fErrorSMHC;        // number of errors in HC per SM
+  TH1D *fErrorSMMCM;       // number of errors in MCM per SM
+  TH1D *fErrorSMADC;       // number of errors in ADC per SM
+
+  TH2D *fErrorLocHC[kDET];       // location of errors
+  TH2D *fErrorLocMCM[kDET];      // location
+  TH2D *fErrorLocADC[kDET];      // errors in ADC
 
-  TH1D *fPed[540];      // Some histograms
-  TH1D *fNoise[540];    // Some histograms
-  TH2D *fChPed[540];    // Some histograms
-  TH2D *fChNoise[540];  // Some histograms
-  TH3D *fData[540];     // Some histograms
-  TH1D *fSignal[540];   // Some histograms
+  // error fraction
+  TGraph *fErrorGraphHC;     // HC errors
+  TGraph *fErrorGraphMCM;    // MCM errors
+  TGraph *fErrorGraphADC;    // ADC errors
 
+  TGraph *fGraphMCM;         // number of strange MCMs detected 
+  TGraph *fGraphPP[3];       // number of strange points
+  
+
+  // mcm tracklets
+  TObjArray *fMcmTracks;     // MCM tracklets
+
+  // problematic MCMs
+  TH2D *fMapMCM;             // map of problematic MCMs
+  TH1D *fFracMCM;            // fraction of problematicc MCMs
+  
+  // full detector view
+  TH2D *fSMHCped;            // full detector view of pedestals
+  TH2D *fSMHCerr;            // full detector view of errors
+  TH2D *fSMLink[3];          // full detector view
+  TGraph *fGrLink[3];        // full detector view
+  
+  //TH1D *fZSsize;
+  
+  
+  // number of fired ADC channels in total and per SM
+  TGraph *fNumberADC[kSM+1];
+  
+  //Int_t fChkDe
+  
+  TH1D *fNoiseTotal;         // total noise
+  TH1D *fPP;                 // points
+  
+  TH1D *fSmNoiseRms[kSM];    // noise RMS
+  TH1D *fSmNoiseFit[kSM];    // noise fit
+  TH1D *fSmPP[kSM];          // points
+
+
+  TH1D *fEvNoDist[1000];     // event numbers
+
+  //
   Double_t fMinNoise;   // Minimum noise
   Double_t fMaxNoise;   // Maximum noise
+  Int_t fFitType;       // fit type
+  
+  // variables keeping info in one event
+  Int_t fnErrorHC[2];  // 0 good, 1 error
+  Int_t fnErrorMCM[2]; // 0 good, 1 error
+  Int_t fnErrorADC[2]; // 0 good, 1 error
+   
+  Int_t fppThresh[3];      // thresholds for storing pp
+  Int_t fnPP[3];           // number of entries above the thershold
+  Int_t fnLink[3];         // links present, beaf-beaf, good
+  Int_t fnADCinSM[kSM+1];  // number of ADC channels in a SuperModule
+  //
+
+
+
+  // private function
+  void  ReadRefHists(Int_t det);
+  Int_t CheckMCM(Int_t index) const;
+  
+  Int_t FillBits(TH1D *hist, Int_t code, Int_t offset);
+
 
-  ClassDef(AliTRDqaBlackEvents,0) // QA for black events  
+  ClassDef(AliTRDqaBlackEvents,1) // QA for black events  
 
 };
 #endif