#include "AliITSAlignMille2ConstrArray.h" #include "AliITSAlignMille2Module.h" //======================================================================================================== ClassImp(AliITSAlignMille2ConstrArray) //________________________________________________________________________________________________________ AliITSAlignMille2ConstrArray::AliITSAlignMille2ConstrArray() : AliITSAlignMille2Constraint(), fModuleIDs(0), fModulePatt(0), fCoeffs(0), fError(0) {} //________________________________________________________________________________________________________ AliITSAlignMille2ConstrArray::AliITSAlignMille2ConstrArray(const Char_t* name,Double_t *parcf,Int_t npar,Double_t val,Double_t err) : AliITSAlignMille2Constraint(name,kTypeGaussian,-100,val,0), fModuleIDs(0), fModulePatt(0), fCoeffs(npar), fError(err) { // create module for (int i=0;iGetUniqueID() == (UInt_t)fModuleIDs[im]) return; } fModuleIDs.Set(nmd+1); fModulePatt.Set(nmd+1); fModuleIDs[nmd] = mod->GetUniqueID(); if (needGeom) { // this is geometrical constraint double jacobian[AliITSAlignMille2Module::kMaxParGeom][AliITSAlignMille2Module::kMaxParGeom]; if (mod->GeomParamsGlobal()) mod->CalcDerivLocGlo(&jacobian[0][0]); // Short_t patt = GetPattern(); if (mod->GeomParamsGlobal()) { // the constraint is defined in the module's local frame. If the alignment of geom params is // done in the global frame, we need to set the real parameter involved for (int i=AliITSAlignMille2Module::kMaxParGeom;i--;) patt &= ~BIT(i); // reset the geometry parameters for (int i=0;iGetUniqueID(), par); } //________________________________________________________________________________________________________ void AliITSAlignMille2ConstrArray::Print(Option_t* ) const { // print data printf("#%3d Constraint %s of type %d | Value=%+e Error=%+e\n",GetConstraintID(),GetName(),GetType(),GetValue(),GetError()); printf("Weights on params: "); for (int i=0;i