LCOV - code coverage report
Current view: top level - ITS/ITSbase - AliITSPlaneEffSSD.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 15 6.7 %
Date: 2016-06-14 17:26:59 Functions: 1 11 9.1 %

          Line data    Source code
       1             : #ifndef ALIITSPLANEEFFSSD_H
       2             : #define ALIITSPLANEEFFSSD_H
       3             : /* Copyright(c) 2007-2009, ALICE Experiment at CERN, All rights reserved. *
       4             :  * See cxx source for full Copyright notice                               */
       5             : 
       6             : #include <TH1F.h>
       7             : #include <TH2I.h>
       8             : #include "AliITSPlaneEff.h"
       9             : 
      10             : class AliCDBId;
      11             : 
      12             : ///////////////////////////////////////////
      13             : //                                       //
      14             : // ITS Plane Efficiency class            //
      15             : //       for SSD                         //
      16             : // Origin: Giuseppe.Bruno@ba.infn.it     //
      17             : ///////////////////////////////////////////
      18             : 
      19             : /* $Id$ */
      20             :   
      21             : class AliITSPlaneEffSSD :  public AliITSPlaneEff {
      22             :  public:
      23             :     AliITSPlaneEffSSD(); // default constructor
      24             :     virtual ~AliITSPlaneEffSSD(); // destructror
      25             :     // copy constructor
      26             :     AliITSPlaneEffSSD(const AliITSPlaneEffSSD &source);
      27             :     // ass. operator
      28             :     AliITSPlaneEffSSD& operator=(const AliITSPlaneEffSSD &s);
      29             :     //    virtual AliITSPlaneEff& operator=(const AliITSPlaneEff &source);
      30             :     // Simple way to add another class (i.e. statistics). 
      31             :     AliITSPlaneEffSSD& operator +=( const AliITSPlaneEffSSD &add);
      32             :     // Getters for average Plane efficiency (icluding dead/noisy)
      33             :     Double_t PlaneEff(const UInt_t mod) const;
      34             :     Double_t ErrPlaneEff(const UInt_t mod) const;
      35             :     // Getters for fFound[] and fTried[]
      36             :     Int_t GetFound(const UInt_t key) const;
      37             :     Int_t GetTried(const UInt_t key) const;
      38             :     // Methods to update the Plane efficiency (specific of the SSD segmentation) 
      39             :     Bool_t UpDatePlaneEff(const Bool_t Kfound, const UInt_t mod);
      40             :     //
      41             :     enum {kNModule = 1698}; // The number of modules
      42             :     enum {kNChip = 6}; // The number of chips per side of a module (2 sides: 12 chips)
      43             :     enum {kNSide = 2}; // The number of sides of a module (p and n side)
      44             :     enum {kNStrip = 128}; // The number of strips per chip (in a module 2*768 strips)
      45             : //
      46             : //  Plane efficiency for active  detector (excluding dead/noisy channels)
      47             : //  access to DB is needed
      48             :     virtual Double_t LivePlaneEff(UInt_t mod) const;
      49             :     virtual Double_t ErrLivePlaneEff(UInt_t mod) const;
      50             :     // Compute the fraction of Live area (of the module for the SSD)
      51             :     virtual Double_t GetFracLive(const UInt_t mod) const;
      52             :     // Compute the fraction of bad (i.e. dead and noisy) area (of the module for the SSD)
      53             :     virtual Double_t GetFracBad(const UInt_t mod) const;
      54             :     virtual Bool_t WriteIntoCDB() const;
      55             :     virtual Bool_t ReadFromCDB(); // this method reads Data Members (statistics) from DataBase
      56             :     Bool_t AddFromCDB(AliCDBId *cdbId);   // this method updates Data Members (statistics) from DataBase
      57           0 :     virtual Bool_t AddFromCDB() {AliCDBId *cdbId=0; return  AddFromCDB(cdbId);}
      58             :    // method to locate a basic block from Detector Local coordinate (to be used in tracking)
      59             :    // see file cxx for numbering convention.
      60             :    // here idet runs from 0 to 747 for layer 4 and from 0 to 949 for layer 5
      61             :     UInt_t GetKeyFromDetLocCoord(Int_t ilay,Int_t idet, Float_t, Float_t locz) const;
      62             :     UInt_t Nblock() const; // return the number of basic blocks
      63             :    // compute the geometrical limit of a basic block (chip) in detector local coordinate system
      64             :     Bool_t GetBlockBoundaries(const UInt_t key,Float_t& xmn,Float_t& xmx,Float_t& zmn,Float_t& zmx) const;
      65             :   // Methods for dealing with auxiliary histograms
      66             :     // method to set on/off the creation/updates of histograms (Histos are created/destroyed)
      67             :     virtual void   SetCreateHistos(Bool_t his=kFALSE)
      68           0 :          {fHis=his; if(fHis) {DeleteHistos(); InitHistos();} else DeleteHistos(); return; }
      69             :     virtual Bool_t FillHistos(UInt_t key, Bool_t found, Float_t *track, Float_t *cluster, Int_t *ctype,Float_t*);
      70             :     virtual Bool_t WriteHistosToFile(TString filename="PlaneEffSSDHistos.root",Option_t* option = "RECREATE");
      71             :     virtual Bool_t ReadHistosFromFile(TString filename="PlaneEffSSDHistos.root"); // histos must exist already !
      72             :                                                                           // This method increases the
      73             :                                                                           // statistics of histos by adding
      74             :                                                                           // those of the input file.
      75             :     UInt_t GetKey(const UInt_t mod) const; // unique key to locate the basic
      76             :                                            // block of the SSD (the module itself)
      77             :  protected:
      78             :     virtual void Copy(TObject &obj) const;
      79             :     Int_t GetMissingTracksForGivenEff(Double_t eff, Double_t RelErr, UInt_t im) const;
      80             :     UInt_t GetModFromKey(const UInt_t key) const;
      81             :     void GetBadInModule(const UInt_t mod, UInt_t& bad) const;
      82             : 
      83             : // 
      84             :     Int_t fFound[kNModule];  // number of associated clusters in a given module
      85             :     Int_t fTried[kNModule];  // number of tracks used for module efficiency evaluation
      86             : //
      87             :  private:
      88             :     enum {kNHisto = kNModule}; // The number of histograms: module by module.
      89             :     //enum {kNclu = 3};          // Build specific histos of residuals up to cluster size kNclu.
      90             :                                // If you change them, then you must change implementation of
      91             :                                // the method FillHistos.
      92             :     virtual void InitHistos();    // create histos by allocating memory for them
      93             :     virtual void DeleteHistos();  // deletete histos (memory is freed)
      94             :     void CopyHistos(AliITSPlaneEffSSD& target) const; // copy only histograms to target
      95             : //
      96             :     TH1F **fHisResX; //! histos with residual distribution (track-cluster) along local X (r-phi)
      97             :     TH1F **fHisResZ; //! histos with residual distribution (track-cluster) along local Z
      98             :     TH2F **fHisResXZ; //! 2-d histos with residual distribution (track-cluster) along local X and Z
      99             :     TH2I **fHisClusterSize; //! histos with cluster-size distribution
     100             :     TH1F **fHisTrackErrX; //! histos with track prediction error on Local X
     101             :     TH1F **fHisTrackErrZ; //! histos with track prediction error on Local Z
     102             :     TH1F **fHisClusErrX; //! histos with Local_X cluster error
     103             :     TH1F **fHisClusErrZ; //! histos with Local_Z cluster error
     104             : //
     105         118 :     ClassDef(AliITSPlaneEffSSD,3) // SSD Plane Efficiency class
     106             : };
     107             : //
     108           0 : inline UInt_t AliITSPlaneEffSSD::Nblock() const {return kNModule;}
     109             : inline Bool_t AliITSPlaneEffSSD::GetBlockBoundaries(const UInt_t key,Float_t& xmn,Float_t& xmx,
     110             :                                                     Float_t& zmn,Float_t& zmx) const {
     111             : //  This method return the geometrical boundaries of the active volume of a given
     112             : //  basic block, in the detector reference system.
     113             : //
     114           0 : if(key>=kNModule)
     115           0 :   {AliWarning("GetBlockBoundaries: you asked for a non existing key"); return kFALSE;}
     116             : const Float_t kDxDefault = 72960.; // For Plane Eff. purpouses, default values 
     117             : const Float_t kDzDefault = 40000.; // are precise enough !!!
     118             : const Float_t kconv = 1.0E-04;  //converts microns to cm.
     119           0 : xmn=-kconv*kDxDefault/2.; xmx=kconv*kDxDefault/2.;
     120           0 : zmn=-kconv*kDzDefault/2.; zmx=kconv*kDzDefault/2.;
     121             : return kTRUE;
     122           0 : }
     123             : //
     124             : inline Int_t AliITSPlaneEffSSD::GetFound(const UInt_t key) const {
     125           0 :  if(key>=kNModule) {AliWarning("GetFound: you asked for a non existing key"); return -1;}
     126           0 :  return fFound[key];
     127           0 : }
     128             : inline Int_t AliITSPlaneEffSSD::GetTried(const UInt_t key) const {
     129           0 :  if(key>=kNModule) {AliWarning("GetTried: you asked for a non existing key"); return -1;}
     130           0 :  return fTried[key];
     131           0 : }
     132             : //
     133             : #endif

Generated by: LCOV version 1.11