LCOV - code coverage report
Current view: top level - TRD/TRDsim - AliTRDptrgParam.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 17 17 100.0 %
Date: 2016-06-14 17:26:59 Functions: 9 12 75.0 %

          Line data    Source code
       1             : #ifndef ALITRDPTRGPARAM_H
       2             : #define ALITRDPTRGPARAM_H
       3             : /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
       4             :  * See cxx source for full Copyright notice                               */
       5             : 
       6             : /* $Id$ */
       7             : 
       8             : // --------------------------------------------------------
       9             : // 
      10             : // Singleton class to hold the parameters steering the PTRG 
      11             : // 
      12             : // --------------------------------------------------------
      13             : 
      14             : class TArrayI;
      15             : class TObjArray;
      16             : #include "TObject.h"
      17             : 
      18             :  
      19             : 
      20             : class AliTRDptrgParam : public TObject {
      21             :  public:
      22             :   enum AliTRDptrgFEBType_t{ kUndefined = (Int_t)0, 
      23             :                             kTZERO = (Int_t)1, 
      24             :                             kVZERO = (Int_t)2 };
      25             :   enum AliTRDptrgOperatingMode_t{ kHits = (Int_t)0, kDigits = (Int_t)1 };
      26             :   enum AliTRDptrgFEBPosition_t{ kB = (Int_t)0, 
      27             :                                 kA = (Int_t)1, 
      28             :                                 kC = (Int_t)2,
      29             :                                 kUnknown = (Int_t)3 };
      30             : 
      31             :   struct AliTRDptrgPTmasks {
      32             :     Bool_t fCBA[2]; // contribute CB-A look up results to pretrigger decision?
      33             :     Bool_t fCBC[2]; // contribute CB-C look up results to pretrigger decision?
      34             :     Bool_t fLUTs[3]; // CB-B look up results contribution to pretrigger decision
      35             :     Bool_t fTLMU[8]; // TLMU output signal contribution to pretrigger decisions
      36             : 
      37           2 :     AliTRDptrgPTmasks() {
      38           2 :       fCBA[0] = kFALSE;
      39           1 :       fCBA[1] = kFALSE;
      40           1 :       fCBC[0] = kFALSE;
      41           1 :       fCBC[1] = kFALSE;
      42           1 :       fLUTs[0] = kFALSE;
      43           1 :       fLUTs[1] = kFALSE;
      44           1 :       fLUTs[2] = kFALSE;
      45          18 :       for (Int_t i = 0; i < 8; i++) {
      46           8 :         fTLMU[i] = kFALSE;
      47             :       } 
      48           2 :     }
      49             :   };
      50             :   virtual ~AliTRDptrgParam();
      51             : 
      52             :   static AliTRDptrgParam *Instance(); // Singleton
      53             :   static void Terminate();  // delete Singleton
      54             :   
      55             :   void LoadStandardConfiguration(); // initialize with standard values
      56             :   Bool_t LoadConfigurationFromFile(TString filename); // load file 
      57             :   
      58             :   Int_t GenerateLUTs(); // generates all LUTs
      59             : 
      60             :   // --- GETTER FUNCTIONS -----------------------------------------------------
      61             :   // -- TLMU --
      62           8 :   const UInt_t* GetTLMUInputMask() const { return this->fTLMUInputMask; };
      63             :   // get TLMU input mask
      64             :    
      65           8 :   UInt_t** GetTLMUcmatrices() const { return this->fTLMUcmatrices; };
      66             :   // get TLMU coincidence matrices
      67             :   
      68           8 :   UInt_t** GetTLMUmultiplicity() const { return this->fTLMUmultiplicity; };
      69             :   // get TLMU multiplicity slices
      70             : 
      71           8 :   Int_t** GetTLMUoutput() const { return this->fTLMUoutput; };
      72             :   // get TLMU output mux configuration
      73             : 
      74             :   // -- T0 --
      75             :   UInt_t* GetFEBT0Thresholds(AliTRDptrgFEBPosition_t FEBposition) const;
      76             :   // get T0 FEB Thresholds
      77             : 
      78             :   Int_t* GetFEBT0LUT(AliTRDptrgFEBPosition_t FEBposition, Int_t iLUT); 
      79             :   // get T0 FEB LUTs
      80             :  
      81             :   // -- V0 --
      82             :   UInt_t* GetFEBV0Thresholds(AliTRDptrgFEBPosition_t FEBposition, Int_t iCard) const;
      83             :   // get V0 FEB Thresholds
      84             : 
      85             :   Int_t* GetFEBV0LUT(AliTRDptrgFEBPosition_t FEBposition, Int_t iCard, 
      86             :                      Int_t iLUT);
      87             :   // get V0 FEB LUTs
      88             : 
      89             :   Int_t* GetCBLUT(UInt_t CB, Int_t LUTid);
      90             :   // returns the corresponding LUT (control boxes only)
      91             : 
      92           8 :   const AliTRDptrgPTmasks* GetPTmasks() const { return &fPTmasks; };
      93             :   // returns the list containing the information which CB-B inputs are masked
      94             :   // out or forwarded as pre trigger output to the CTP
      95             : 
      96             : 
      97             :   Int_t CheckVariables() const; // returns -1 if a variable is already deleted
      98             : 
      99             :  protected:
     100             :   UInt_t GetMultiplicity(UInt_t BitVector) const; 
     101             :   // returns the multiplicity ('1's) 
     102             :   
     103             :   UInt_t GetMultiplicity(Int_t BitVector) const;  
     104             :   // returns the multiplicity ('1's)
     105             : 
     106             :   // helper functions for configuration file reading
     107             :   // -----------------------------------------------
     108             :   Bool_t ParseTLMU(TString identifier, TString value);
     109             :   // parses the TLMU configuration parameters
     110             : 
     111             :   Bool_t ParseCBB(TString identifier, TString value);
     112             :   // parses the CBB configuration parameters
     113             :   
     114             :   Bool_t ParseCBAC(TString identifier, TString value);
     115             :   // parses the CB-A and CB-C configuration parameters
     116             : 
     117             :   Bool_t ParseFEB(TString identifier, TString value);
     118             :   // parses the FEB configuration parameters
     119             : 
     120             :   Bool_t ParseMultiplicityCondition(TString condition, UInt_t* threshold,
     121             :                                     UInt_t* mask);
     122             :   // parses a multiplicity condition "M(#mask#)>#threshold#"
     123             : 
     124             :   UInt_t BinaryTStringToInt(TString number) const;
     125             :   // converts TString containing a binary number to a unsigned integer
     126             : 
     127             :   void SplitUpValues(TString value, TObjArray& arr);
     128             :   // splits a value string which contains multiple values seperated by ' ' 
     129             :   // and '\t'
     130             : 
     131             :   TString CleanTString(TString string);
     132             :   // removes ' ' and '\t' in a TString
     133             : 
     134             :   void PrepareLine(TString line, TString& identifier, TString& value);
     135             :   // divides identifier and value (seperator is the first ' ' or '\t'  
     136             : 
     137             :   
     138             :   // (helper) functions for conversion of logical equations into LUTs 
     139             :   // ----------------------------------------------------------------
     140             :   Int_t LookUp(TString* const identifier) const; // translates an identifier used in a
     141             :   // logical equation into an address bit of the corresponding LUT
     142             :   
     143             :   void MergeResults(TArrayI*& partResult1, TArrayI*& partResult2, 
     144             :                     TArrayI*& results, TArrayI*& signalsInvolved1, 
     145             :                     TArrayI*& signalsInvolved2, TArrayI*& signalsInvolved,
     146             :                     Bool_t useOR);
     147             :   // merges the results of to logical equation parts
     148             :   
     149             :   void ConvertLogicalEqToBitVectors(TString eq, TArrayI*& results,
     150             :                                     TArrayI*& signalsInvolved);
     151             :   // converts logical equations to bit vectors
     152             :   // neglected input signals are for now assumed to be 0!
     153             :   
     154             :   void CheckSignalsInvolved(TArrayI*& results, TArrayI*& signalsInvolved,
     155             :                             Int_t inputWidth);
     156             :   // adds all signal combinations needed to behave correctly in every state of
     157             :   // neglected signals
     158             :   
     159             :   Int_t* GenerateLUTbasedOnEq(TString eq, Int_t inputWidth, Int_t initValue);
     160             :   // generates a lut based on a logical functions (uses the functions above)
     161             : 
     162             :   static AliTRDptrgParam *fgInstance; // instance pointer
     163             : 
     164             :   // TLMU configuration --------------------------------------------------------
     165             :   UInt_t fTLMUInputMask[18]; // masks TOF-to-TRD bits
     166             :   UInt_t fTLMUInputStretch; // designates how long TLMU input is stretched   
     167             :   UInt_t** fTLMUcmatrices; // [matrix][section] unsigned int values
     168             :   // Bits 0..17 identify supermodules, bits equal 1 are checked for coincidence
     169             : 
     170             :   UInt_t** fTLMUmultiplicity; // [slice][0 = lower bound, 1 = upper bound]
     171             :   // use a lower bound above 576 to disable
     172             :   
     173             :   Int_t** fTLMUoutput; // [output][0 = cmatrix, 1 = multslice] 
     174             :   // output bit assignment, -1 disables
     175             : 
     176             :   // T0 ------------------------------------------------------------------------
     177             :   // [position][channel] 12 channels at A and C side
     178             :   UInt_t** fFEBT0Thresholds; // threshold for analog value discrimination
     179             :   
     180             :   // [position][LUT][0 = threshold, 1 = bitmask] 2 LUTs at A and C side  
     181             :   UInt_t*** fFEBT0Multiplicities; // multiplicity threshold for T0
     182             :   Int_t*** fFEBT0LUTs; // look up tables [position][LUT][entry]
     183             :     
     184             :   // V0 ------------------------------------------------------------------------
     185             :   // [position][feb][channel] 4x8 channels per side (A and C)
     186             :   UInt_t*** fFEBV0Thresholds; // threshold for analog value discrimation
     187             : 
     188             :   // [position][feb][LUT][0 = threshold, 1 = bitmask] 2 LUTs per FEB 
     189             :   // (4 per Side) at each side ( A and C)
     190             :   UInt_t**** fFEBV0Multiplicities; // multiplicity threshold for V0   
     191             :   Int_t**** fFEBV0LUTs; // look up tables [position][feb][LUT][entry] 
     192             : 
     193             :   // CB-{A/B/C}
     194             :   // 0 = B, 1 = A, 2 = C
     195             :   Int_t*** fCBLUTs; // control box look up tables
     196             : 
     197             :   // CB-A ----------------------------------------------------------------------
     198             :   TString fCBALUTequ[2]; // logical equations used for LUT generation for CB-A
     199             : 
     200             :   // CB-C ----------------------------------------------------------------------
     201             :   TString fCBCLUTequ[2]; // logical equations used for LUT generation for CB-C
     202             : 
     203             :   // CBB -----------------------------------------------------------------------
     204             :   TString fCBBLUTequ[3]; // logical equations used for LUT generation for CB-B
     205             : 
     206             :   // CTP -----------------------------------------------------------------------
     207             :   // PT mask
     208             :   AliTRDptrgPTmasks fPTmasks; 
     209             :   // masks usage of internal signals for the pretrigger wake up signal
     210             :                               
     211             :  private:
     212             :   AliTRDptrgParam();                         // instance only via Instance()
     213             :   AliTRDptrgParam(const AliTRDptrgParam &rhs); // not implemented
     214             :   AliTRDptrgParam& operator=(const AliTRDptrgParam &rhs); // not implemented
     215             : 
     216       98642 :   ClassDef(AliTRDptrgParam, 1);
     217             : };
     218             : #endif

Generated by: LCOV version 1.11