#include "AliHMPIDMisAligner.h"
#include "AliGeomManager.h"
#include "TClonesArray.h"
#include "TRandom.h"
#include "TMath.h"
#include "AliAlignObjMatrix.h"
#include "AliLog.h"
ClassImp(AliHMPIDMisAligner)
AliHMPIDMisAligner::AliHMPIDMisAligner() : AliMisAligner()
{
}
TClonesArray* AliHMPIDMisAligner::MakeAlObjsArray() {
if(!AliGeomManager::GetGeometry())
{
AliError("No geometry loaded into AliGeomManager! Returning null pointer!");
return 0;
}
TClonesArray *array = new TClonesArray("AliAlignObjMatrix",7);
AliGeomManager::ELayerID idHMPID = AliGeomManager::kHMPID;
Double_t sigmaTrans, sigmaRotPsi, sigmaRotTheta, sigmaRotPhi;
Double_t dX=0., dY=0., dZ=0., dPsi=0., dTheta=0., dPhi=0.;
gRandom->SetSeed(4357);
if(TString(GetMisalType())=="ideal")
{
for (Int_t iCh = 0; iCh < 7; iCh++) {
new((*array)[iCh]) AliAlignObjMatrix(AliGeomManager::SymName(idHMPID,iCh),
AliGeomManager::LayerToVolUID(idHMPID,iCh),dX,dY,dZ,dPsi,dTheta,dPhi,kTRUE);
}
}else if( TString(GetMisalType())=="residual" || TString(GetMisalType())=="full"){
sigmaTrans=4.;
sigmaRotPsi = 0.2;
sigmaRotTheta = 1.0;
sigmaRotPhi = 0.5;
for (Int_t iCh = 0; iCh < 7; iCh++) {
dX = sigmaTrans/2 - (sigmaTrans/2+0.1)*gRandom->Uniform();
dY = sigmaTrans/2 - (sigmaTrans/2+0.1)*gRandom->Uniform();
dZ = (gRandom->Uniform() - 0.5)*sigmaTrans;
dPsi = (gRandom->Uniform() - 0.5)*sigmaRotPsi;
dTheta = sigmaRotTheta - (sigmaRotTheta+0.1)*gRandom->Uniform();
dPhi = (gRandom->Uniform() - 0.5)*sigmaRotPhi;
new((*array)[iCh]) AliAlignObjMatrix(AliGeomManager::SymName(idHMPID,iCh),
AliGeomManager::LayerToVolUID(idHMPID,iCh),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* AliHMPIDMisAligner::GetCDBMetaData() const {
AliCDBMetaData* md = new AliCDBMetaData();
md->SetResponsible("HMPID expert means nothing");
if(TString(GetMisalType())=="ideal")
md->SetComment("Alignment objects for HMPID ideal misalignment");
if(TString(GetMisalType())=="residual")
md->SetComment("Alignment objects for HMPID residual misalignment");
if(TString(GetMisalType())=="full")
md->SetComment("Full misalignment objects for HMPID produced with sigmaTrans=1mm and sigmaRot=1mrad");
return md;
}
AliHMPIDMisAligner.cxx:10 AliHMPIDMisAligner.cxx:11 AliHMPIDMisAligner.cxx:12 AliHMPIDMisAligner.cxx:13 AliHMPIDMisAligner.cxx:14 AliHMPIDMisAligner.cxx:15 AliHMPIDMisAligner.cxx:16 AliHMPIDMisAligner.cxx:17 AliHMPIDMisAligner.cxx:18 AliHMPIDMisAligner.cxx:19 AliHMPIDMisAligner.cxx:20 AliHMPIDMisAligner.cxx:21 AliHMPIDMisAligner.cxx:22 AliHMPIDMisAligner.cxx:23 AliHMPIDMisAligner.cxx:24 AliHMPIDMisAligner.cxx:25 AliHMPIDMisAligner.cxx:26 AliHMPIDMisAligner.cxx:27 AliHMPIDMisAligner.cxx:28 AliHMPIDMisAligner.cxx:29 AliHMPIDMisAligner.cxx:30 AliHMPIDMisAligner.cxx:31 AliHMPIDMisAligner.cxx:32 AliHMPIDMisAligner.cxx:33 AliHMPIDMisAligner.cxx:34 AliHMPIDMisAligner.cxx:35 AliHMPIDMisAligner.cxx:36 AliHMPIDMisAligner.cxx:37 AliHMPIDMisAligner.cxx:38 AliHMPIDMisAligner.cxx:39 AliHMPIDMisAligner.cxx:40 AliHMPIDMisAligner.cxx:41 AliHMPIDMisAligner.cxx:42 AliHMPIDMisAligner.cxx:43 AliHMPIDMisAligner.cxx:44 AliHMPIDMisAligner.cxx:45 AliHMPIDMisAligner.cxx:46 AliHMPIDMisAligner.cxx:47 AliHMPIDMisAligner.cxx:48 AliHMPIDMisAligner.cxx:49 AliHMPIDMisAligner.cxx:50 AliHMPIDMisAligner.cxx:51 AliHMPIDMisAligner.cxx:52 AliHMPIDMisAligner.cxx:53 AliHMPIDMisAligner.cxx:54 AliHMPIDMisAligner.cxx:55 AliHMPIDMisAligner.cxx:56 AliHMPIDMisAligner.cxx:57 AliHMPIDMisAligner.cxx:58 AliHMPIDMisAligner.cxx:59 AliHMPIDMisAligner.cxx:60 AliHMPIDMisAligner.cxx:61 AliHMPIDMisAligner.cxx:62 AliHMPIDMisAligner.cxx:63 AliHMPIDMisAligner.cxx:64 AliHMPIDMisAligner.cxx:65 AliHMPIDMisAligner.cxx:66 AliHMPIDMisAligner.cxx:67 AliHMPIDMisAligner.cxx:68 AliHMPIDMisAligner.cxx:69 AliHMPIDMisAligner.cxx:70 AliHMPIDMisAligner.cxx:71 AliHMPIDMisAligner.cxx:72 AliHMPIDMisAligner.cxx:73 AliHMPIDMisAligner.cxx:74 AliHMPIDMisAligner.cxx:75 AliHMPIDMisAligner.cxx:76 AliHMPIDMisAligner.cxx:77 AliHMPIDMisAligner.cxx:78 AliHMPIDMisAligner.cxx:79 AliHMPIDMisAligner.cxx:80 AliHMPIDMisAligner.cxx:81 AliHMPIDMisAligner.cxx:82 AliHMPIDMisAligner.cxx:83 AliHMPIDMisAligner.cxx:84 AliHMPIDMisAligner.cxx:85 AliHMPIDMisAligner.cxx:86 AliHMPIDMisAligner.cxx:87 AliHMPIDMisAligner.cxx:88 AliHMPIDMisAligner.cxx:89 AliHMPIDMisAligner.cxx:90 AliHMPIDMisAligner.cxx:91 AliHMPIDMisAligner.cxx:92 AliHMPIDMisAligner.cxx:93 AliHMPIDMisAligner.cxx:94 AliHMPIDMisAligner.cxx:95 AliHMPIDMisAligner.cxx:96 AliHMPIDMisAligner.cxx:97 AliHMPIDMisAligner.cxx:98 AliHMPIDMisAligner.cxx:99 AliHMPIDMisAligner.cxx:100 AliHMPIDMisAligner.cxx:101 AliHMPIDMisAligner.cxx:102 AliHMPIDMisAligner.cxx:103 AliHMPIDMisAligner.cxx:104 AliHMPIDMisAligner.cxx:105 AliHMPIDMisAligner.cxx:106 AliHMPIDMisAligner.cxx:107 AliHMPIDMisAligner.cxx:108 AliHMPIDMisAligner.cxx:109 AliHMPIDMisAligner.cxx:110 AliHMPIDMisAligner.cxx:111 AliHMPIDMisAligner.cxx:112 AliHMPIDMisAligner.cxx:113 AliHMPIDMisAligner.cxx:114 AliHMPIDMisAligner.cxx:115 AliHMPIDMisAligner.cxx:116 AliHMPIDMisAligner.cxx:117 AliHMPIDMisAligner.cxx:118 AliHMPIDMisAligner.cxx:119 AliHMPIDMisAligner.cxx:120 AliHMPIDMisAligner.cxx:121 AliHMPIDMisAligner.cxx:122 AliHMPIDMisAligner.cxx:123 AliHMPIDMisAligner.cxx:124 AliHMPIDMisAligner.cxx:125 AliHMPIDMisAligner.cxx:126 AliHMPIDMisAligner.cxx:127 AliHMPIDMisAligner.cxx:128