LCOV - code coverage report
Current view: top level - ITS/ITSrec - AliITSAlignMille2Constraint.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 22 4.5 %
Date: 2016-06-14 17:26:59 Functions: 1 28 3.6 %

          Line data    Source code
       1             : #ifndef ALIITSALIGNMILLE2CONSTRAINT_H
       2             : #define ALIITSALIGNMILLE2CONSTRAINT_H
       3             : 
       4             : #include <TNamed.h>
       5             : #include <TArrayS.h>
       6             : #include <TArrayD.h>
       7             : 
       8             : class AliITSAlignMille2Module;
       9             : 
      10             : /*-----------------------------------------------------------------------------------------
      11             : Simple constraint on the subunits of the module ID (if ID>=0) or all modules w/o 
      12             : parents (ID=-1): the mean or median of the GLOBAL corrections of each parameter requested
      13             : in the pattern must be = 0. When added explicitly to the fit it requires addition of 
      14             : Lagrange multipliers which may require more powerfull matrix preconditioners. For this 
      15             : reason we usually ommit the constrain from explicit fit and apply it afterwards to obtained
      16             : parameters (with median constraint this is the only method possible) 
      17             : 
      18             : Author: ruben.shahoyan@cern.ch
      19             : ------------------------------------------------------------------------------------------*/
      20             : class AliITSAlignMille2Constraint : public TNamed
      21             : {
      22             :  public:
      23             :   enum {kTypeMean,kTypeMedian};
      24             :   enum {kDisabledBit=31};
      25             :   //
      26             :   AliITSAlignMille2Constraint();
      27             :   AliITSAlignMille2Constraint(const Char_t* name,Int_t t,Int_t mdID,Double_t val=0,UInt_t pattern=0x0ffff);
      28           0 :   virtual ~AliITSAlignMille2Constraint() {}
      29             :   //
      30           0 :   UInt_t       GetConstraintID()        const {return GetUniqueID();}
      31           0 :   Int_t        GetType()                const {return fType;}
      32           0 :   Int_t        GetModuleID()            const {return fModuleID;}
      33           0 :   Double_t     GetValue()               const {return fVal;}
      34           0 :   UInt_t       GetPattern()             const {return fPattern;}
      35           0 :   UInt_t       GetAppliedPattern()      const {return fApplied;}
      36           0 :   UInt_t       GetRemainingPattern()    const {return (~fApplied)&GetPattern();}
      37           0 :   Bool_t       IsApplied(Int_t par)     const {return fApplied & (0x1<<par);}
      38           0 :   Bool_t       IsApplied()              const {return (fApplied&0xffff)==GetPattern();}
      39           0 :   Bool_t       IncludesParam(int id)    const {return fPattern&BIT(id);}
      40             :   void         Print(Option_t* opt="")  const;
      41             :   //
      42           0 :   void         SetConstraintID(UInt_t id)            {SetUniqueID(id);}
      43           0 :   void         SetType(Int_t t)                      {fType = t;}
      44           0 :   void         SetPattern(UInt_t pat)                {fPattern = pat;}
      45           0 :   void         SetValue(Double_t val)                {fVal = val;}
      46           0 :   void         SetApplied(Int_t par)                 {fApplied |= par<0 ? 0x0ffff : (0x1<<par);}
      47           0 :   void         Disable()                             {fApplied |= UInt_t(0x1)<<kDisabledBit;}
      48           0 :   void         Enable()                              {fApplied &= ~(UInt_t(0x1)<<kDisabledBit);}
      49           0 :   Bool_t       IsDisabled()             const        {return (fApplied>>kDisabledBit)&0x1;}
      50             :   //
      51           0 :   virtual Bool_t IncludesModule(Int_t id)            const {return fModuleID==id;}
      52           0 :   virtual Bool_t IncludesModPar(Int_t id,Int_t par)  const {return IncludesModule(id) && IncludesParam(par);}
      53             :   virtual Bool_t IncludesModPar(const AliITSAlignMille2Module* mod, Int_t par) const;
      54             :   //
      55             :  protected:
      56             :   AliITSAlignMille2Constraint(const AliITSAlignMille2Constraint& src);
      57             :   AliITSAlignMille2Constraint& operator=(const AliITSAlignMille2Constraint& ) {return *this;}
      58             :   //
      59             :  protected:
      60             :   Int_t             fType;              // constriant type: mean, median ...
      61             :   Double_t          fVal;               // constraint value
      62             :   Int_t             fModuleID;          // Id of the module involved, -1 for orphans
      63             :   UInt_t            fApplied;           // was it already applied?
      64             :   UInt_t            fPattern;           // pattern of params involved
      65             :   //
      66         116 :   ClassDef(AliITSAlignMille2Constraint,0)
      67             : };
      68             : 
      69             : 
      70             : #endif

Generated by: LCOV version 1.11