]>
Commit | Line | Data |
---|---|---|
6526a72c | 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) | |
8 | ||
9 | Author: ruben.shahoyan@cern.ch | |
10 | ------------------------------------------------------------------------------------------*/ | |
11 | #include "AliITSAlignMille2Constraint.h" | |
12 | #include "AliITSAlignMille2Module.h" | |
13 | ||
14 | ||
15 | ||
16 | ClassImp(AliITSAlignMille2Constraint) | |
17 | ||
18 | //________________________________________________________________________________________________________ | |
19 | AliITSAlignMille2Constraint::AliITSAlignMille2Constraint() : | |
20 | TNamed(), | |
21 | fType(kTypeMean), | |
22 | fVal(0), | |
23 | fModuleID(0), | |
ef24eb3b | 24 | fApplied(0), |
25 | fPattern(0) | |
6526a72c | 26 | {} |
27 | ||
28 | //________________________________________________________________________________________________________ | |
29 | AliITSAlignMille2Constraint::AliITSAlignMille2Constraint(const Char_t* name,Int_t t,Int_t mdID,Double_t val,UInt_t pattern) : | |
30 | TNamed(name,""), | |
31 | fType(t), | |
32 | fVal(val), | |
33 | fModuleID(mdID), | |
ef24eb3b | 34 | fApplied(0), |
35 | fPattern(pattern) | |
6526a72c | 36 | { |
6526a72c | 37 | } |
38 | ||
39 | //________________________________________________________________________________________________________ | |
40 | AliITSAlignMille2Constraint::AliITSAlignMille2Constraint(const AliITSAlignMille2Constraint& src) : | |
41 | TNamed(src), | |
42 | fType(src.fType), | |
43 | fVal(src.fVal), | |
44 | fModuleID(src.fModuleID), | |
ef24eb3b | 45 | fApplied(src.fApplied), |
46 | fPattern(src.fPattern) | |
6526a72c | 47 | {/* DUMMY */} |
48 | ||
49 | //________________________________________________________________________________________________________ | |
45993b23 | 50 | Bool_t AliITSAlignMille2Constraint::IncludesModPar(const AliITSAlignMille2Module* mod, Int_t par) const |
6526a72c | 51 | { |
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() ); | |
56 | } | |
57 | ||
58 | ||
59 | //________________________________________________________________________________________________________ | |
60 | void AliITSAlignMille2Constraint::Print(Option_t* ) const | |
61 | { | |
b80c197e | 62 | // print data |
6526a72c | 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"); | |
66 | // | |
67 | } | |
68 |