ROOT logo
/*-----------------------------------------------------------------------------------------
Simple constraint on the subunits of the module ID (if ID>=0) or all modules w/o 
parents (ID=-1): the mean or median of the GLOBAL corrections of each parameter requested
in the pattern must be = 0. When added explicitly to the fit it requires addition of 
Lagrange multipliers which may require more powerfull matrix preconditioners. For this 
reason we usually ommit the constrain from explicit fit and apply it afterwards to obtained
parameters (with median constraint this is the only method possible) 

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



ClassImp(AliITSAlignMille2Constraint)

//________________________________________________________________________________________________________
AliITSAlignMille2Constraint::AliITSAlignMille2Constraint() :
TNamed(),
fType(kTypeMean),
fVal(0),
fModuleID(0),
fApplied(0),
fPattern(0)
{}

//________________________________________________________________________________________________________
AliITSAlignMille2Constraint::AliITSAlignMille2Constraint(const Char_t* name,Int_t t,Int_t mdID,Double_t val,UInt_t pattern) :
TNamed(name,""),
fType(t),
fVal(val),
fModuleID(mdID),
fApplied(0),
fPattern(pattern)
{
}

//________________________________________________________________________________________________________
AliITSAlignMille2Constraint::AliITSAlignMille2Constraint(const AliITSAlignMille2Constraint& src) :
TNamed(src),
fType(src.fType),
fVal(src.fVal),
fModuleID(src.fModuleID),
fApplied(src.fApplied),
fPattern(src.fPattern)
{/* DUMMY */} 

//________________________________________________________________________________________________________
Bool_t AliITSAlignMille2Constraint::IncludesModPar(const AliITSAlignMille2Module* mod, Int_t par) const
{
  // is this module/parameter mentioned in the list?
  if (!IncludesParam(par)) return kFALSE;
  if (fModuleID==-1 && !mod->GetParent()) return kTRUE;
  return IncludesModule( mod->GetUniqueID() );
}


//________________________________________________________________________________________________________
void AliITSAlignMille2Constraint::Print(Option_t* ) const
{
  // print data
  printf("#%3d Constraint %s of type %d on module %d to value %+e\n",GetConstraintID(),GetName(),GetType(),GetModuleID(),GetValue());
  printf("Paremeters: ");
  for (int i=0;i<=8;i++) if (TestBit(0x1<<i)) printf("%d ",i); printf("\n");
  //
}

 AliITSAlignMille2Constraint.cxx:1
 AliITSAlignMille2Constraint.cxx:2
 AliITSAlignMille2Constraint.cxx:3
 AliITSAlignMille2Constraint.cxx:4
 AliITSAlignMille2Constraint.cxx:5
 AliITSAlignMille2Constraint.cxx:6
 AliITSAlignMille2Constraint.cxx:7
 AliITSAlignMille2Constraint.cxx:8
 AliITSAlignMille2Constraint.cxx:9
 AliITSAlignMille2Constraint.cxx:10
 AliITSAlignMille2Constraint.cxx:11
 AliITSAlignMille2Constraint.cxx:12
 AliITSAlignMille2Constraint.cxx:13
 AliITSAlignMille2Constraint.cxx:14
 AliITSAlignMille2Constraint.cxx:15
 AliITSAlignMille2Constraint.cxx:16
 AliITSAlignMille2Constraint.cxx:17
 AliITSAlignMille2Constraint.cxx:18
 AliITSAlignMille2Constraint.cxx:19
 AliITSAlignMille2Constraint.cxx:20
 AliITSAlignMille2Constraint.cxx:21
 AliITSAlignMille2Constraint.cxx:22
 AliITSAlignMille2Constraint.cxx:23
 AliITSAlignMille2Constraint.cxx:24
 AliITSAlignMille2Constraint.cxx:25
 AliITSAlignMille2Constraint.cxx:26
 AliITSAlignMille2Constraint.cxx:27
 AliITSAlignMille2Constraint.cxx:28
 AliITSAlignMille2Constraint.cxx:29
 AliITSAlignMille2Constraint.cxx:30
 AliITSAlignMille2Constraint.cxx:31
 AliITSAlignMille2Constraint.cxx:32
 AliITSAlignMille2Constraint.cxx:33
 AliITSAlignMille2Constraint.cxx:34
 AliITSAlignMille2Constraint.cxx:35
 AliITSAlignMille2Constraint.cxx:36
 AliITSAlignMille2Constraint.cxx:37
 AliITSAlignMille2Constraint.cxx:38
 AliITSAlignMille2Constraint.cxx:39
 AliITSAlignMille2Constraint.cxx:40
 AliITSAlignMille2Constraint.cxx:41
 AliITSAlignMille2Constraint.cxx:42
 AliITSAlignMille2Constraint.cxx:43
 AliITSAlignMille2Constraint.cxx:44
 AliITSAlignMille2Constraint.cxx:45
 AliITSAlignMille2Constraint.cxx:46
 AliITSAlignMille2Constraint.cxx:47
 AliITSAlignMille2Constraint.cxx:48
 AliITSAlignMille2Constraint.cxx:49
 AliITSAlignMille2Constraint.cxx:50
 AliITSAlignMille2Constraint.cxx:51
 AliITSAlignMille2Constraint.cxx:52
 AliITSAlignMille2Constraint.cxx:53
 AliITSAlignMille2Constraint.cxx:54
 AliITSAlignMille2Constraint.cxx:55
 AliITSAlignMille2Constraint.cxx:56
 AliITSAlignMille2Constraint.cxx:57
 AliITSAlignMille2Constraint.cxx:58
 AliITSAlignMille2Constraint.cxx:59
 AliITSAlignMille2Constraint.cxx:60
 AliITSAlignMille2Constraint.cxx:61
 AliITSAlignMille2Constraint.cxx:62
 AliITSAlignMille2Constraint.cxx:63
 AliITSAlignMille2Constraint.cxx:64
 AliITSAlignMille2Constraint.cxx:65
 AliITSAlignMille2Constraint.cxx:66
 AliITSAlignMille2Constraint.cxx:67
 AliITSAlignMille2Constraint.cxx:68