#include "AliT0MisAligner.h"
#include "AliGeomManager.h"
#include "TClonesArray.h"
#include "TRandom.h"
#include "AliAlignObjParams.h"
#include "AliLog.h"
ClassImp(AliT0MisAligner)
AliT0MisAligner::AliT0MisAligner() : AliMisAligner()
{
}
TClonesArray* AliT0MisAligner::MakeAlObjsArray() {
TClonesArray *array = new TClonesArray("AliAlignObjParams",4);
TClonesArray &alobj = *array;
Double_t dx,dy,dz,dpsi,dtheta,dphi;
gRandom->SetSeed(4321);
Double_t sigmatr = 0.006;
Double_t sigmarot = 0.001;
TString symName[2] = {"/ALIC_1/0STR_1","/ALIC_1/0STL_1"};
Int_t iIndex=0;
AliGeomManager::ELayerID iLayer = AliGeomManager::kInvalidLayer;
UShort_t volid = AliGeomManager::LayerToVolUID(iLayer,iIndex);
if(TString(GetMisalType())=="ideal")
{
dx=0., dy=0., dz=0.;
dpsi=0., dtheta=0., dphi=0.;
for (Int_t imod=0; imod<2; imod++)
{
new(alobj[imod]) AliAlignObjParams(symName[imod].Data(), volid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE);
}
}else if(TString(GetMisalType())=="residual" || TString(GetMisalType())=="full")
{
for (Int_t imod=0; imod<2; imod++)
{
dx = gRandom->Gaus(0.,sigmatr);
dy = gRandom->Gaus(0.,sigmatr);
dz = gRandom->Gaus(0.,sigmatr);
dpsi = gRandom->Gaus(0.,sigmarot);
dtheta = gRandom->Gaus(0.,sigmarot);
dphi = gRandom->Gaus(0.,sigmarot);
new(alobj[imod]) AliAlignObjParams(symName[imod].Data(), volid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE);
}
}else{
AliError(Form("\"%s\" is not a valid identifier for misalignment types. Exiting ...",GetMisalType()));
return 0;
}
return array;
}
AliCDBMetaData* AliT0MisAligner::GetCDBMetaData() const {
AliCDBMetaData* md = new AliCDBMetaData();
md->SetResponsible("Tomasz Malkiewicz");
if(TString(GetMisalType())=="ideal")
md->SetComment("Alignment objects for T0 ideal misalignment");
if(TString(GetMisalType())=="residual")
md->SetComment("Alignment objects for T0 residual misalignment");
if(TString(GetMisalType())=="full")
md->SetComment("Alignment objects for T0 full misalignment");
return md;
}