]>
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), | |
24 | fApplied(0) | |
25 | {} | |
26 | ||
27 | //________________________________________________________________________________________________________ | |
28 | AliITSAlignMille2Constraint::AliITSAlignMille2Constraint(const Char_t* name,Int_t t,Int_t mdID,Double_t val,UInt_t pattern) : | |
29 | TNamed(name,""), | |
30 | fType(t), | |
31 | fVal(val), | |
32 | fModuleID(mdID), | |
33 | fApplied(0) | |
34 | { | |
35 | SetPattern(pattern); | |
36 | } | |
37 | ||
38 | //________________________________________________________________________________________________________ | |
39 | AliITSAlignMille2Constraint::AliITSAlignMille2Constraint(const AliITSAlignMille2Constraint& src) : | |
40 | TNamed(src), | |
41 | fType(src.fType), | |
42 | fVal(src.fVal), | |
43 | fModuleID(src.fModuleID), | |
44 | fApplied(src.fApplied) | |
45 | {/* DUMMY */} | |
46 | ||
47 | //________________________________________________________________________________________________________ | |
45993b23 | 48 | Bool_t AliITSAlignMille2Constraint::IncludesModPar(const AliITSAlignMille2Module* mod, Int_t par) const |
6526a72c | 49 | { |
50 | // is this module/parameter mentioned in the list? | |
51 | if (!IncludesParam(par)) return kFALSE; | |
52 | if (fModuleID==-1 && !mod->GetParent()) return kTRUE; | |
53 | return IncludesModule( mod->GetUniqueID() ); | |
54 | } | |
55 | ||
56 | ||
57 | //________________________________________________________________________________________________________ | |
58 | void AliITSAlignMille2Constraint::Print(Option_t* ) const | |
59 | { | |
60 | printf("#%3d Constraint %s of type %d on module %d to value %+e\n",GetConstraintID(),GetName(),GetType(),GetModuleID(),GetValue()); | |
61 | printf("Paremeters: "); | |
62 | for (int i=0;i<=8;i++) if (TestBit(0x1<<i)) printf("%d ",i); printf("\n"); | |
63 | // | |
64 | } | |
65 |