ROOT logo
#ifndef ALIITSALIGNMILLE2CONSTRARRAY_H
#define ALIITSALIGNMILLE2CONSTRARRAY_H

/*-------------------------------------------------------------------------------------
Set of gaussian constraints on LOCAL corrections of the module parameters defined 
for a set of modules. 

Author: ruben.shahoyan@cern.ch
--------------------------------------------------------------------------------------*/
#include "AliITSAlignMille2Constraint.h"
class AliITSAlignMille2Modle;

class AliITSAlignMille2ConstrArray : public AliITSAlignMille2Constraint
{
 public:
  enum {kTypeGaussian=10};
  //
  AliITSAlignMille2ConstrArray();
  AliITSAlignMille2ConstrArray(const Char_t* name,Double_t *parcf,Int_t npar,Double_t val,Double_t err);
  virtual ~AliITSAlignMille2ConstrArray() {}
  //
  Double_t     GetError()               const {return fError;}
  Int_t        GetNModules()            const {return fModuleIDs.GetSize();}
  Int_t        GetNCoeffs()             const {return fCoeffs.GetSize();}
  Int_t        GetModuleID(Int_t i)     const {return fModuleIDs[i];}
  Double_t     GetCoeff(Int_t i)        const {return fCoeffs[i];}
  void         Print(Option_t* opt="")  const;
  //
  void         AddModule(AliITSAlignMille2Module* mod,Bool_t needGeom = kTRUE);
  void         SetError(Double_t err)         {fError = err;}
  //
  virtual Bool_t IncludesModule(Int_t id)            const;
  virtual Bool_t IncludesModPar(Int_t id,Int_t par)  const;
  virtual Bool_t IncludesModPar(const AliITSAlignMille2Module* mod, Int_t par) const;
  //
 protected:
  AliITSAlignMille2ConstrArray(const AliITSAlignMille2ConstrArray& src);
  AliITSAlignMille2ConstrArray& operator=(const AliITSAlignMille2ConstrArray& ) {return *this;}
  //
 protected:
  TArrayS           fModuleIDs;         // module id' to apply this constraint
  TArrayS           fModulePatt;        // pattern of variables involved (in the frame of varied params)
  TArrayD           fCoeffs;            // weight for each param          
  Double_t          fError;             // constraint error
  
  //
  ClassDef(AliITSAlignMille2ConstrArray,0)
};


#endif
 AliITSAlignMille2ConstrArray.h:1
 AliITSAlignMille2ConstrArray.h:2
 AliITSAlignMille2ConstrArray.h:3
 AliITSAlignMille2ConstrArray.h:4
 AliITSAlignMille2ConstrArray.h:5
 AliITSAlignMille2ConstrArray.h:6
 AliITSAlignMille2ConstrArray.h:7
 AliITSAlignMille2ConstrArray.h:8
 AliITSAlignMille2ConstrArray.h:9
 AliITSAlignMille2ConstrArray.h:10
 AliITSAlignMille2ConstrArray.h:11
 AliITSAlignMille2ConstrArray.h:12
 AliITSAlignMille2ConstrArray.h:13
 AliITSAlignMille2ConstrArray.h:14
 AliITSAlignMille2ConstrArray.h:15
 AliITSAlignMille2ConstrArray.h:16
 AliITSAlignMille2ConstrArray.h:17
 AliITSAlignMille2ConstrArray.h:18
 AliITSAlignMille2ConstrArray.h:19
 AliITSAlignMille2ConstrArray.h:20
 AliITSAlignMille2ConstrArray.h:21
 AliITSAlignMille2ConstrArray.h:22
 AliITSAlignMille2ConstrArray.h:23
 AliITSAlignMille2ConstrArray.h:24
 AliITSAlignMille2ConstrArray.h:25
 AliITSAlignMille2ConstrArray.h:26
 AliITSAlignMille2ConstrArray.h:27
 AliITSAlignMille2ConstrArray.h:28
 AliITSAlignMille2ConstrArray.h:29
 AliITSAlignMille2ConstrArray.h:30
 AliITSAlignMille2ConstrArray.h:31
 AliITSAlignMille2ConstrArray.h:32
 AliITSAlignMille2ConstrArray.h:33
 AliITSAlignMille2ConstrArray.h:34
 AliITSAlignMille2ConstrArray.h:35
 AliITSAlignMille2ConstrArray.h:36
 AliITSAlignMille2ConstrArray.h:37
 AliITSAlignMille2ConstrArray.h:38
 AliITSAlignMille2ConstrArray.h:39
 AliITSAlignMille2ConstrArray.h:40
 AliITSAlignMille2ConstrArray.h:41
 AliITSAlignMille2ConstrArray.h:42
 AliITSAlignMille2ConstrArray.h:43
 AliITSAlignMille2ConstrArray.h:44
 AliITSAlignMille2ConstrArray.h:45
 AliITSAlignMille2ConstrArray.h:46
 AliITSAlignMille2ConstrArray.h:47
 AliITSAlignMille2ConstrArray.h:48
 AliITSAlignMille2ConstrArray.h:49
 AliITSAlignMille2ConstrArray.h:50
 AliITSAlignMille2ConstrArray.h:51