1 /*-----------------------------------------------------------------------------------------
2 Simple constraint on the subunits of the module ID (if ID>=0) or all modules w/o
3 parents (ID=-1): the mean or median of the GLOBAL corrections of each parameter requested
4 in the pattern must be = 0. When added explicitly to the fit it requires addition of
5 Lagrange multipliers which may require more powerfull matrix preconditioners. For this
6 reason we usually ommit the constrain from explicit fit and apply it afterwards to obtained
7 parameters (with median constraint this is the only method possible)
9 Author: ruben.shahoyan@cern.ch
10 ------------------------------------------------------------------------------------------*/
11 #include "AliITSAlignMille2Constraint.h"
12 #include "AliITSAlignMille2Module.h"
16 ClassImp(AliITSAlignMille2Constraint)
18 //________________________________________________________________________________________________________
19 AliITSAlignMille2Constraint::AliITSAlignMille2Constraint() :
28 //________________________________________________________________________________________________________
29 AliITSAlignMille2Constraint::AliITSAlignMille2Constraint(const Char_t* name,Int_t t,Int_t mdID,Double_t val,UInt_t pattern) :
39 //________________________________________________________________________________________________________
40 AliITSAlignMille2Constraint::AliITSAlignMille2Constraint(const AliITSAlignMille2Constraint& src) :
44 fModuleID(src.fModuleID),
45 fApplied(src.fApplied),
46 fPattern(src.fPattern)
49 //________________________________________________________________________________________________________
50 Bool_t AliITSAlignMille2Constraint::IncludesModPar(const AliITSAlignMille2Module* mod, Int_t par) const
52 // is this module/parameter mentioned in the list?
53 if (!IncludesParam(par)) return kFALSE;
54 if (fModuleID==-1 && !mod->GetParent()) return kTRUE;
55 return IncludesModule( mod->GetUniqueID() );
59 //________________________________________________________________________________________________________
60 void AliITSAlignMille2Constraint::Print(Option_t* ) const
63 printf("#%3d Constraint %s of type %d on module %d to value %+e\n",GetConstraintID(),GetName(),GetType(),GetModuleID(),GetValue());
64 printf("Paremeters: ");
65 for (int i=0;i<=8;i++) if (TestBit(0x1<<i)) printf("%d ",i); printf("\n");