18 #if !defined(__CINT__) 19 #include <TControlBar.h> 43 TControlBar *menu =
new TControlBar(
"vertical",
"EMCAL alignment control");
44 menu->AddButton(
"Help to run EMCAL alignment control",
"Help()",
45 "Explains how to use EMCAL alignment control menus");
47 menu->AddButton(
"Ideal geometry",
"IdealAlignment()",
48 "Set ideal EMCAL geometry with zero displacement");
49 menu->AddButton(
"Misaligned geometry",
"FullMisalignment()",
50 "Set EMCAL geometry with large displacement");
51 menu->AddButton(
"Residual misaligned geometry",
"ResidualAlignment()",
52 "Set EMCAL geometry with small residual displacement");
60 printf(
"\n\n\nSet EMCAL alignment parameters and write them into ALICE CDB." 61 "Press button \"Ideal geometry\" to create EMCAL geometry with ideal geometry." 62 "Press button \"Misaligned geometry\" to create EMCAL geometry with fully displaced" 63 " and disorientated geometry." 64 "Press button \"Residual misaligned geometry\" to create EMCAL geometry with" 65 "infinitesimal displacement and disorientation\n\n\n");
77 TClonesArray *
array =
new TClonesArray(
"AliAlignObjParams",20);
78 TClonesArray &alobj = *
array;
82 Double_t dx=0., dy=0., dz=0., dpsi=0., dtheta=0., dphi=0.;
92 TString basePath =
"EMCAL/FullSupermodule";
93 for (Int_t iModule = 0; iModule < 10; iModule++)
95 TString newPath = basePath;
98 dvoluid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE);
103 dvoluid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE);
105 dvoluid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE);
109 basePath =
"EMCAL/DCALSupermodule";
110 for (Int_t iModule = 0; iModule < 6; iModule++)
112 TString newPath = basePath;
113 newPath += iModule+1;
115 dvoluid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE);
120 dvoluid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE);
122 dvoluid, dx, dy, dz, dpsi, dtheta, dphi, kTRUE);
133 md->
SetComment(
"Alignment objects for ideal geometry, i.e. applying them to TGeo has to leave geometry unchanged");
135 CDB->
Put(array,
id, md);
147 TClonesArray *
array =
new TClonesArray(
"AliAlignObjParams",20);
148 TClonesArray &alobj = *
array;
156 Double_t sigmaTrans = 0.01; Double_t sigmaRot = 0.001;
157 Double_t dx=0., dy=0., dz=0., dpsi=0., dtheta=0., dphi=0.;
159 TRandom *pRnd =
new TRandom(4357);
164 TString basePath =
"EMCAL/FullSupermodule";
165 for(Int_t iSM = 0; iSM < 10; iSM++)
167 dx = pRnd->Gaus(0,sigmaTrans); dy = pRnd->Gaus(0,sigmaTrans); dz = pRnd->Gaus(0,sigmaTrans);
168 dpsi = pRnd->Gaus(0,sigmaRot); dtheta = pRnd->Gaus(0,sigmaRot); dphi = pRnd->Gaus(0,sigmaRot);
169 TString newPath = basePath;
172 dvoluid, dx,dy,dz,dpsi,dtheta,dphi, kTRUE);
176 dx = pRnd->Gaus(0,sigmaTrans); dy = pRnd->Gaus(0,sigmaTrans); dz = pRnd->Gaus(0,sigmaTrans);
177 dpsi = pRnd->Gaus(0,sigmaRot); dtheta = pRnd->Gaus(0,sigmaRot); dphi = pRnd->Gaus(0,sigmaRot);
179 dvoluid, dx,dy,dz,dpsi,dtheta,dphi, kTRUE);
181 dx = pRnd->Gaus(0,sigmaTrans); dy = pRnd->Gaus(0,sigmaTrans); dz = pRnd->Gaus(0,sigmaTrans);
182 dpsi = pRnd->Gaus(0,sigmaRot); dtheta = pRnd->Gaus(0,sigmaRot); dphi = pRnd->Gaus(0,sigmaRot);
184 dvoluid, dx,dy,dz,dpsi,dtheta,dphi, kTRUE);
189 basePath =
"EMCAL/DCALSupermodule";
190 for(Int_t iSM = 0; iSM < 6; iSM++)
192 dx = pRnd->Gaus(0,sigmaTrans); dy = pRnd->Gaus(0,sigmaTrans); dz = pRnd->Gaus(0,sigmaTrans);
193 dpsi = pRnd->Gaus(0,sigmaRot); dtheta = pRnd->Gaus(0,sigmaRot); dphi = pRnd->Gaus(0,sigmaRot);
194 TString newPath = basePath;
197 dvoluid, dx,dy,dz,dpsi,dtheta,dphi, kTRUE);
201 dx = pRnd->Gaus(0,sigmaTrans); dy = pRnd->Gaus(0,sigmaTrans); dz = pRnd->Gaus(0,sigmaTrans);
202 dpsi = pRnd->Gaus(0,sigmaRot); dtheta = pRnd->Gaus(0,sigmaRot); dphi = pRnd->Gaus(0,sigmaRot);
204 dvoluid, dx,dy,dz,dpsi,dtheta,dphi, kTRUE);
206 dx = pRnd->Gaus(0,sigmaTrans); dy = pRnd->Gaus(0,sigmaTrans); dz = pRnd->Gaus(0,sigmaTrans);
207 dpsi = pRnd->Gaus(0,sigmaRot); dtheta = pRnd->Gaus(0,sigmaRot); dphi = pRnd->Gaus(0,sigmaRot);
209 dvoluid, dx,dy,dz,dpsi,dtheta,dphi, kTRUE);
220 md->
SetComment(
"Alignment objects for slightly misaligned geometry, i.e. applying them to TGeo has to distirbes geometry very little (resisual misalignment");
222 CDB->
Put(array,
id, md);
233 TClonesArray *
array =
new TClonesArray(
"AliAlignObjParams",20);
234 TClonesArray &alobj = *
array;
243 Double_t sigmaTrans = 10.; Double_t sigmaRot = 0.1;
244 Double_t dx=0., dy=0., dz=0., dpsi=0., dtheta=0., dphi=0.;
246 TRandom *pRnd =
new TRandom(4357);
251 TString basePath =
"EMCAL/FullSupermodule";
252 for(Int_t iSM = 0; iSM < 10; iSM++)
254 dx = pRnd->Gaus(0,sigmaTrans); dy = pRnd->Gaus(0,sigmaTrans); dz = pRnd->Gaus(0,sigmaTrans);
255 dpsi = pRnd->Gaus(0,sigmaRot); dtheta = pRnd->Gaus(0,sigmaRot); dphi = pRnd->Gaus(0,sigmaRot);
256 TString newPath = basePath;
259 dvoluid, dx,dy,dz,dpsi,dtheta,dphi, kTRUE);
263 dx = pRnd->Gaus(0,sigmaTrans); dy = pRnd->Gaus(0,sigmaTrans); dz = pRnd->Gaus(0,sigmaTrans);
264 dpsi = pRnd->Gaus(0,sigmaRot); dtheta = pRnd->Gaus(0,sigmaRot); dphi = pRnd->Gaus(0,sigmaRot);
266 dvoluid, dx,dy,dz,dpsi,dtheta,dphi, kTRUE);
268 dx = pRnd->Gaus(0,sigmaTrans); dy = pRnd->Gaus(0,sigmaTrans); dz = pRnd->Gaus(0,sigmaTrans);
269 dpsi = pRnd->Gaus(0,sigmaRot); dtheta = pRnd->Gaus(0,sigmaRot); dphi = pRnd->Gaus(0,sigmaRot);
271 dvoluid, dx,dy,dz,dpsi,dtheta,dphi, kTRUE);
276 for(Int_t iSM = 0; iSM < 6; iSM++)
278 dx = pRnd->Gaus(0,sigmaTrans); dy = pRnd->Gaus(0,sigmaTrans); dz = pRnd->Gaus(0,sigmaTrans);
279 dpsi = pRnd->Gaus(0,sigmaRot); dtheta = pRnd->Gaus(0,sigmaRot); dphi = pRnd->Gaus(0,sigmaRot);
280 TString newPath = basePath;
283 dvoluid, dx,dy,dz,dpsi,dtheta,dphi, kTRUE);
287 dx = pRnd->Gaus(0,sigmaTrans); dy = pRnd->Gaus(0,sigmaTrans); dz = pRnd->Gaus(0,sigmaTrans);
288 dpsi = pRnd->Gaus(0,sigmaRot); dtheta = pRnd->Gaus(0,sigmaRot); dphi = pRnd->Gaus(0,sigmaRot);
290 dvoluid, dx,dy,dz,dpsi,dtheta,dphi, kTRUE);
292 dx = pRnd->Gaus(0,sigmaTrans); dy = pRnd->Gaus(0,sigmaTrans); dz = pRnd->Gaus(0,sigmaTrans);
293 dpsi = pRnd->Gaus(0,sigmaRot); dtheta = pRnd->Gaus(0,sigmaRot); dphi = pRnd->Gaus(0,sigmaRot);
295 dvoluid, dx,dy,dz,dpsi,dtheta,dphi, kTRUE);
306 md->
SetComment(
"Alignment objects for fully misaligned geometry, i.e. applying them to TGeo has to distirbes geometry very much");
308 CDB->
Put(array,
id, md);
printf("Chi2/npoints = %f\n", TMath::Sqrt(chi2/npoints))
void AliEMCALSetAlignment()
Bool_t Put(TObject *object, const AliCDBId &id, AliCDBMetaData *metaData, const char *mirrors="", DataType type=kPrivate)
void SetDefaultStorage(const char *dbString)
static UShort_t LayerToVolUID(ELayerID layerId, Int_t modId)
static AliCDBManager * Instance(TMap *entryCache=NULL, Int_t run=-1)
void FullMisalignment()
Create alignment objects for EMCAL with fully misaligned geometry.