1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 ***************************************************************************/
18 Revision 1.7 2006/04/27 13:13:29 hristov
19 Moving the destructor to the implementation file
21 Revision 1.6 2006/04/20 22:30:49 hristov
22 Coding conventions (Annalisa)
24 Revision 1.5 2006/04/16 22:29:05 hristov
25 Coding conventions (Annalisa)
27 Revision 1.4 2006/04/05 08:35:38 hristov
28 Coding conventions (S.Arcelli, C.Zampolli)
30 Revision 1.3 2006/03/31 13:49:07 arcelli
31 Removing some junk printout
33 Revision 1.2 2006/03/31 11:26:30 arcelli
34 changing CDB Ids according to standard convention
36 Revision 1.1 2006/03/28 14:54:48 arcelli
37 class for TOF alignment
39 author: Silvia Arcelli, arcelli@bo.infn.it
42 /////////////////////////////////////////////////////////
44 // Class for alignment procedure //
48 /////////////////////////////////////////////////////////
56 #include "AliAlignObj.h"
57 #include "AliAlignObjAngles.h"
58 #include "AliCDBManager.h"
59 #include "AliCDBMetaData.h"
61 #include "AliCDBEntry.h"
62 #include "AliTOFAlignment.h"
64 ClassImp(AliTOFAlignment)
66 //_____________________________________________________________________________
67 AliTOFAlignment::AliTOFAlignment():TTask("AliTOFAlignment","") {
68 //AliTOFalignment main Ctor
71 fTOFAlignObjArray=0x0;
73 //_____________________________________________________________________________
74 AliTOFAlignment::AliTOFAlignment(const AliTOFAlignment &t):TTask("AliTOFAlignment",""){
75 //AliTOFAlignment copy Ctor
77 fNTOFAlignObj=t.fNTOFAlignObj;
78 fTOFAlignObjArray=t.fTOFAlignObjArray;
82 //_____________________________________________________________________________
83 AliTOFAlignment& AliTOFAlignment::operator=(const AliTOFAlignment &t){
84 //AliTOFAlignment assignment operator
86 this->fNTOFAlignObj=t.fNTOFAlignObj;
87 this->fTOFAlignObjArray=t.fTOFAlignObjArray;
92 //_____________________________________________________________________________
93 AliTOFAlignment::~AliTOFAlignment() {delete fTOFAlignObjArray;}
95 //_____________________________________________________________________________
96 void AliTOFAlignment::Smear( Float_t *tr, Float_t *rot)
98 //Introduce Random Offset/Tilts
99 fTOFAlignObjArray = new TObjArray(kMaxAlignObj);
100 Float_t dx, dy, dz; // shifts
101 Float_t dpsi, dtheta, dphi; // angular displacements
102 TRandom *rnd = new TRandom(1567);
105 AliAlignObj::ELayerID iLayer = AliAlignObj::kInvalidLayer;
106 UShort_t iIndex=0; //dummy volume index
107 // AliAlignObj::ELayerID iLayer = AliAlignObj::kTOF;
108 // Int_t iIndex=1; //dummy volume index
109 UShort_t dvoluid = AliAlignObj::LayerToVolUID(iLayer,iIndex); //dummy volume identity
111 for (i = 0; i<nSMTOF ; i++) {
113 sprintf(path,"/ALIC_1/B077_1/BSEGMO%i_1/BTOF%i_1",i,i);
115 dx = (rnd->Gaus(0.,1.))*tr[0];
116 dy = (rnd->Gaus(0.,1.))*tr[1];
117 dz = (rnd->Gaus(0.,1.))*tr[2];
121 AliAlignObjAngles *o =new AliAlignObjAngles(path, dvoluid, dx, dy, dz, dpsi, dtheta, dphi);
122 fTOFAlignObjArray->Add(o);
125 fNTOFAlignObj=fTOFAlignObjArray->GetEntries();
126 AliInfo(Form("Number of Alignable Volumes: %d",fNTOFAlignObj));
130 //_____________________________________________________________________________
131 void AliTOFAlignment::Align( Float_t *tr, Float_t *rot)
133 //Introduce Offset/Tilts
135 fTOFAlignObjArray = new TObjArray(kMaxAlignObj);
136 Float_t dx, dy, dz; // shifts
137 Float_t dpsi, dtheta, dphi; // angular displacements
141 AliAlignObj::ELayerID iLayer = AliAlignObj::kInvalidLayer;
142 UShort_t iIndex=0; //dummy volume index
143 // AliAlignObj::ELayerID iLayer = AliAlignObj::kTOF;
144 // Int_t iIndex=1; //dummy volume index
145 UShort_t dvoluid = AliAlignObj::LayerToVolUID(iLayer,iIndex); //dummy volume identity
147 for (i = 0; i<nSMTOF ; i++) {
150 sprintf(path,"/ALIC_1/B077_1/BSEGMO%i_1/BTOF%i_1",i,i);
158 AliAlignObjAngles *o =new AliAlignObjAngles(path, dvoluid, dx, dy, dz, dpsi, dtheta, dphi);
159 fTOFAlignObjArray->Add(o);
161 fNTOFAlignObj=fTOFAlignObjArray->GetEntries();
162 AliInfo(Form("Number of Alignable Volumes: %d",fNTOFAlignObj));
164 //_____________________________________________________________________________
165 void AliTOFAlignment::WriteParOnCDB(Char_t *sel, Int_t minrun, Int_t maxrun)
167 //Write Align Par on CDB
168 AliCDBManager *man = AliCDBManager::Instance();
169 if(!man->IsDefaultStorageSet())man->SetDefaultStorage("local://$ALICE_ROOT");
170 Char_t *sel1 = "AlignPar" ;
172 sprintf(out,"%s/%s",sel,sel1);
173 AliCDBId idTOFAlign(out,minrun,maxrun);
174 AliCDBMetaData *mdTOFAlign = new AliCDBMetaData();
175 mdTOFAlign->SetResponsible("TOF");
176 AliInfo(Form("Number of Alignable Volumes: %d",fNTOFAlignObj));
177 man->Put(fTOFAlignObjArray,idTOFAlign,mdTOFAlign);
179 //_____________________________________________________________________________
180 void AliTOFAlignment::ReadParFromCDB(Char_t *sel, Int_t nrun)
182 //Read Align Par from CDB
183 AliCDBManager *man = AliCDBManager::Instance();
184 if(!man->IsDefaultStorageSet())man->SetDefaultStorage("local://$ALICE_ROOT");
185 Char_t *sel1 = "AlignPar" ;
187 sprintf(out,"%s/%s",sel,sel1);
188 AliCDBEntry *entry = man->Get(out,nrun);
189 fTOFAlignObjArray=(TObjArray*)entry->GetObject();
190 fNTOFAlignObj=fTOFAlignObjArray->GetEntries();
191 AliInfo(Form("Number of Alignable Volumes from CDB: %d",fNTOFAlignObj));
194 //_____________________________________________________________________________
195 void AliTOFAlignment::WriteSimParOnCDB(Char_t *sel, Int_t minrun, Int_t maxrun)
197 //Write Sim Align Par on CDB
198 AliCDBManager *man = AliCDBManager::Instance();
199 if(!man->IsDefaultStorageSet())man->SetDefaultStorage("local://$ALICE_ROOT");
200 Char_t *sel1 = "AlignSimPar" ;
202 sprintf(out,"%s/%s",sel,sel1);
203 AliCDBId idTOFAlign(out,minrun,maxrun);
204 AliCDBMetaData *mdTOFAlign = new AliCDBMetaData();
205 mdTOFAlign->SetResponsible("TOF");
206 AliInfo(Form("Number of Alignable Volumes: %d",fNTOFAlignObj));
207 man->Put(fTOFAlignObjArray,idTOFAlign,mdTOFAlign);
209 //_____________________________________________________________________________
210 void AliTOFAlignment::ReadSimParFromCDB(Char_t *sel, Int_t nrun){
211 //Read Sim Align Par from CDB
212 AliCDBManager *man = AliCDBManager::Instance();
213 if(!man->IsDefaultStorageSet())man->SetDefaultStorage("local://$ALICE_ROOT");
214 Char_t *sel1 = "AlignSimPar" ;
216 sprintf(out,"%s/%s",sel,sel1);
217 AliCDBEntry *entry = man->Get(out,nrun);
218 fTOFAlignObjArray=(TObjArray*)entry->GetObject();
219 fNTOFAlignObj=fTOFAlignObjArray->GetEntries();
220 AliInfo(Form("Number of Alignable Volumes from CDB: %d",fNTOFAlignObj));
223 //_____________________________________________________________________________
224 void AliTOFAlignment::WriteOnCDBforDC()
226 //Write Align Par on CDB for DC06
227 AliCDBManager *man = AliCDBManager::Instance();
228 if(!man->IsDefaultStorageSet())man->SetDefaultStorage("local://$ALICE_ROOT");
229 AliCDBId idTOFAlign("TOF/Align/Data",0,0);
230 AliCDBMetaData *mdTOFAlign = new AliCDBMetaData();
231 mdTOFAlign->SetComment("Alignment objects for ideal geometry, i.e. applying them to TGeo has to leave geometry unchanged");
232 mdTOFAlign->SetResponsible("TOF");
233 AliInfo(Form("Number of Alignable Volumes: %d",fNTOFAlignObj));
234 man->Put(fTOFAlignObjArray,idTOFAlign,mdTOFAlign);
236 //_____________________________________________________________________________
237 void AliTOFAlignment::ReadFromCDBforDC()
239 //Read Sim Align Par from CDB for DC06
240 AliCDBManager *man = AliCDBManager::Instance();
241 if(!man->IsDefaultStorageSet())man->SetDefaultStorage("local://$ALICE_ROOT");
242 AliCDBEntry *entry = man->Get("TOF/Align/Data",0);
243 fTOFAlignObjArray=(TObjArray*)entry->GetObject();
244 fNTOFAlignObj=fTOFAlignObjArray->GetEntries();
245 AliInfo(Form("Number of Alignable Volumes from CDB: %d",fNTOFAlignObj));