+ // barrel
+ vxbarrel = AliMathBase::TruncatedGaus(0,spdbarrel_dx/3,spdbarrel_dx);
+ vybarrel = AliMathBase::TruncatedGaus(0,spdbarrel_dy/3,spdbarrel_dy);
+ vzbarrel = AliMathBase::TruncatedGaus(0,spdbarrel_dz/3,spdbarrel_dz);
+ vpsibarrel = AliMathBase::TruncatedGaus(0,spdbarrel_dpsi/3,spdbarrel_dpsi);
+ vthetabarrel = AliMathBase::TruncatedGaus(0,spdbarrel_dtheta/3,spdbarrel_dtheta);
+ vphibarrel = AliMathBase::TruncatedGaus(0,spdbarrel_dphi/3,spdbarrel_dphi);
+
+ // top half-barrel
+ vx = AliMathBase::TruncatedGaus(0,spdhalfbarrel_dx/3,spdhalfbarrel_dx);
+ vy = AliMathBase::TruncatedGaus(0,spdhalfbarrel_dy/3,spdhalfbarrel_dy);
+ vz = AliMathBase::TruncatedGaus(0,spdhalfbarrel_dz/3,spdhalfbarrel_dz);
+ vpsi = AliMathBase::TruncatedGaus(0,spdhalfbarrel_dpsi/3,spdhalfbarrel_dpsi);
+ vtheta = AliMathBase::TruncatedGaus(0,spdhalfbarrel_dtheta/3,spdhalfbarrel_dtheta);
+ vphi = AliMathBase::TruncatedGaus(0,spdhalfbarrel_dphi/3,spdhalfbarrel_dphi);
+
+ vx += vxbarrel;
+ vy += vybarrel;
+ vz += vzbarrel;
+ vpsi += vpsibarrel;
+ vtheta += vthetabarrel;
+ vphi += vphibarrel;
+
+ alignMaker.AddSectorAlignObj(1,5,spdsector_dx,spdsector_dy,spdsector_dz,
+ spdsector_dpsi,spdsector_dtheta,spdsector_dphi,
+ vx,vy,vz,vpsi,vtheta,vphi,unifspdsector);
+
+ // bottom half-barrel
+ vx = AliMathBase::TruncatedGaus(0,spdhalfbarrel_dx/3,spdhalfbarrel_dx);
+ vy = AliMathBase::TruncatedGaus(0,spdhalfbarrel_dy/3,spdhalfbarrel_dy);
+ vz = AliMathBase::TruncatedGaus(0,spdhalfbarrel_dz/3,spdhalfbarrel_dz);
+ vpsi = AliMathBase::TruncatedGaus(0,spdhalfbarrel_dpsi/3,spdhalfbarrel_dpsi);
+ vtheta = AliMathBase::TruncatedGaus(0,spdhalfbarrel_dtheta/3,spdhalfbarrel_dtheta);
+ vphi = AliMathBase::TruncatedGaus(0,spdhalfbarrel_dphi/3,spdhalfbarrel_dphi);
+
+ vx += vxbarrel;
+ vy += vybarrel;
+ vz += vzbarrel;
+ vpsi += vpsibarrel;
+ vtheta += vthetabarrel;
+ vphi += vphibarrel;
+
+ alignMaker.AddSectorAlignObj(6,10,spdsector_dx,spdsector_dy,spdsector_dz,
+ spdsector_dpsi,spdsector_dtheta,spdsector_dphi,
+ vx,vy,vz,vpsi,vtheta,vphi,unifspdsector);
+
+
+
+ //=****************************************
+ // misalignment at the level of half-staves (SPD)/ladders&layers (SDD,SSD) :
+ //=****************************************
+
+ // SPD
+ alignMaker.AddAlignObj(0,-1,spdhalfstave_dx,spdhalfstave_dy,spdhalfstave_dz,spdhalfstave_dpsi,spdhalfstave_dtheta,spdhalfstave_dphi,0,0,0,0,0,0,unifspdhalfstave); // all SPD1 half-staves
+ alignMaker.AddAlignObj(1,-1,spdhalfstave_dx,spdhalfstave_dy,spdhalfstave_dz,spdhalfstave_dpsi,spdhalfstave_dtheta,spdhalfstave_dphi,0,0,0,0,0,0,unifspdhalfstave); // all SPD2 half-staves
+
+ // SDD
+ // barrel
+ vxbarrel = alignMaker.GetUnif(-sddbarrel_dx,sddbarrel_dx);
+ vybarrel = alignMaker.GetUnif(-sddbarrel_dy,sddbarrel_dy);
+ vzbarrel = alignMaker.GetUnif(-sddbarrel_dz,sddbarrel_dz);
+ vpsibarrel = alignMaker.GetUnif(-sddbarrel_dpsi,sddbarrel_dpsi);
+ vthetabarrel = alignMaker.GetUnif(-sddbarrel_dtheta,sddbarrel_dtheta);
+ vphibarrel = alignMaker.GetUnif(-sddbarrel_dphi,sddbarrel_dphi);
+
+ // layer SDD1
+ vx = alignMaker.GetUnif(-sddlayer_dx,sddlayer_dx);
+ vy = alignMaker.GetUnif(-sddlayer_dy,sddlayer_dy);
+ vz = alignMaker.GetUnif(-sddlayer_dz,sddlayer_dz);
+ vpsi = alignMaker.GetUnif(-sddlayer_dpsi,sddlayer_dpsi);
+ vtheta = alignMaker.GetUnif(-sddlayer_dtheta,sddlayer_dtheta);
+ vphi = alignMaker.GetUnif(-sddlayer_dphi,sddlayer_dphi);
+
+ vx += vxbarrel;
+ vy += vybarrel;
+ vz += vzbarrel;
+ vpsi += vpsibarrel;
+ vtheta += vthetabarrel;
+ vphi += vphibarrel;
+
+ alignMaker.AddAlignObj(2,-1,sddladder_dx,sddladder_dy,sddladder_dz,sddladder_dpsi,sddladder_dtheta,sddladder_dphi,vx,vy,vz,vpsi,vtheta,vphi,kFALSE); // all SDD1 ladders
+
+ // layer SDD2
+ vx = alignMaker.GetUnif(-sddlayer_dx,sddlayer_dx);
+ vy = alignMaker.GetUnif(-sddlayer_dy,sddlayer_dy);
+ vz = alignMaker.GetUnif(-sddlayer_dz,sddlayer_dz);
+ vpsi = alignMaker.GetUnif(-sddlayer_dpsi,sddlayer_dpsi);
+ vtheta = alignMaker.GetUnif(-sddlayer_dtheta,sddlayer_dtheta);
+ vphi = alignMaker.GetUnif(-sddlayer_dphi,sddlayer_dphi);
+
+ vx += vxbarrel;
+ vy += vybarrel;
+ vz += vzbarrel;
+ vpsi += vpsibarrel;
+ vtheta += vthetabarrel;
+ vphi += vphibarrel;
+
+ alignMaker.AddAlignObj(3,-1,sddladder_dx,sddladder_dy,sddladder_dz,sddladder_dpsi,sddladder_dtheta,sddladder_dphi,vx,vy,vz,vpsi,vtheta,vphi,kFALSE); // all SDD2 ladders
+
+ // SSD
+ // barrel
+ vxbarrel = alignMaker.GetUnif(-ssdbarrel_dx,ssdbarrel_dx);
+ vybarrel = alignMaker.GetUnif(-ssdbarrel_dy,ssdbarrel_dy);
+ vzbarrel = alignMaker.GetUnif(-ssdbarrel_dz,ssdbarrel_dz);
+ vpsibarrel = alignMaker.GetUnif(-ssdbarrel_dpsi,ssdbarrel_dpsi);
+ vthetabarrel = alignMaker.GetUnif(-ssdbarrel_dtheta,ssdbarrel_dtheta);
+ vphibarrel = alignMaker.GetUnif(-ssdbarrel_dphi,ssdbarrel_dphi);
+
+ // layer SSD1
+ vx = alignMaker.GetUnif(-ssdlayer_dx,ssdlayer_dx);
+ vy = alignMaker.GetUnif(-ssdlayer_dy,ssdlayer_dy);
+ vz = alignMaker.GetUnif(-ssdlayer_dz,ssdlayer_dz);
+ vpsi = alignMaker.GetUnif(-ssdlayer_dpsi,ssdlayer_dpsi);
+ vtheta = alignMaker.GetUnif(-ssdlayer_dtheta,ssdlayer_dtheta);
+ vphi = alignMaker.GetUnif(-ssdlayer_dphi,ssdlayer_dphi);
+
+ vx += vxbarrel;
+ vy += vybarrel;
+ vz += vzbarrel;
+ vpsi += vpsibarrel;
+ vtheta += vthetabarrel;
+ vphi += vphibarrel;
+
+ alignMaker.AddAlignObj(4,-1,ssdladder_dx,ssdladder_dy,ssdladder_dz,ssdladder_dpsi,ssdladder_dtheta,ssdladder_dphi,vx,vy,vz,vpsi,vtheta,vphi,kFALSE); // all SSD1 ladders
+
+ // layer SSD2
+ vx = alignMaker.GetUnif(-ssdlayer_dx,ssdlayer_dx);
+ vy = alignMaker.GetUnif(-ssdlayer_dy,ssdlayer_dy);
+ vz = alignMaker.GetUnif(-ssdlayer_dz,ssdlayer_dz);
+ vpsi = alignMaker.GetUnif(-ssdlayer_dpsi,ssdlayer_dpsi);
+ vtheta = alignMaker.GetUnif(-ssdlayer_dtheta,ssdlayer_dtheta);
+ vphi = alignMaker.GetUnif(-ssdlayer_dphi,ssdlayer_dphi);
+
+ vx += vxbarrel;
+ vy += vybarrel;
+ vz += vzbarrel;
+ vpsi += vpsibarrel;
+ vtheta += vthetabarrel;
+ vphi += vphibarrel;
+
+ alignMaker.AddAlignObj(5,-1,ssdladder_dx,ssdladder_dy,ssdladder_dz,ssdladder_dpsi,ssdladder_dtheta,ssdladder_dphi,vx,vy,vz,vpsi,vtheta,vphi,kFALSE); // all SSD2 ladders
+
+ //=****************************************
+ // misalignment at the level of ladders (SPD)/modules (SDD,SSD) :
+ //=****************************************
+
+ alignMaker.AddAlignObj(0,spdladder_dx,spdladder_dy,spdladder_dz,spdladder_dpsi,spdladder_dtheta,spdladder_dphi,kFALSE); // all SPD1 ladders
+ alignMaker.AddAlignObj(1,spdladder_dx,spdladder_dy,spdladder_dz,spdladder_dpsi,spdladder_dtheta,spdladder_dphi,kFALSE); // all SPD2 ladders
+
+ alignMaker.AddAlignObj(2,sddmodule_dx,sddmodule_dy,sddmodule_dz,sddmodule_dpsi,sddmodule_dtheta,sddmodule_dphi,kFALSE); // all SDD1 modules
+ alignMaker.AddAlignObj(3,sddmodule_dx,sddmodule_dy,sddmodule_dz,sddmodule_dpsi,sddmodule_dtheta,sddmodule_dphi,kFALSE); // all SDD2 modules
+
+ alignMaker.AddAlignObj(4,ssdmodule_dx,ssdmodule_dy,ssdmodule_dz,ssdmodule_dpsi,ssdmodule_dtheta,ssdmodule_dphi,kFALSE); // all SSD1 modules
+ alignMaker.AddAlignObj(5,ssdmodule_dx,ssdmodule_dy,ssdmodule_dz,ssdmodule_dpsi,ssdmodule_dtheta,ssdmodule_dphi,kFALSE); // all SSD2 modules
+
+
+
+ if(TString(gSystem->Getenv("TOCDB")) != TString("kTRUE")){