/*
$Log$
+Revision 1.19 2007/10/02 09:46:08 arcelli
+add methods to retrieve real survey data, and make some analysis (by B. Guerzoni)
+
Revision 1.17 2007/06/06 16:26:46 arcelli
remove fall-back call to local CDB storage
#include <Rtypes.h>
+#include "TGeoMatrix.h"
#include "TMath.h"
#include "TFile.h"
#include "TRandom.h"
+#include "TGeoManager.h"
+#include "TGeoVolume.h"
+#include "TGeoBBox.h"
+#include "TGeoTrd1.h"
+#include "TGeoPhysicalNode.h"
+#include "TGeoNode.h"
+#include "TObjString.h"
#include "AliLog.h"
-#include "AliAlignObj.h"
+//#include "AliAlignObj.h"
#include "AliAlignObjParams.h"
#include "AliAlignObjMatrix.h"
#include "AliCDBManager.h"
#include "AliTOFAlignment.h"
#include "AliSurveyObj.h"
#include "AliSurveyPoint.h"
-#include "TObjString.h"
+
ClassImp(AliTOFAlignment)
const Double_t AliTOFAlignment::fgkRorigTOF = 384.5; // Mean Radius of the TOF ext. volume, cm
}
//_____________________________________________________________________________
AliTOFAlignment::AliTOFAlignment(const AliTOFAlignment &t):
- TTask("AliTOFAlignment",""),
- fNTOFAlignObj(0),
+ TTask(t),
+ fNTOFAlignObj(t.fNTOFAlignObj),
fTOFmgr(0x0),
- fTOFAlignObjArray(0x0)
+ fTOFAlignObjArray(t.fTOFAlignObjArray)
{
//AliTOFAlignment copy Ctor
- fNTOFAlignObj=t.fNTOFAlignObj;
- fTOFAlignObjArray=t.fTOFAlignObjArray;
//AliTOFalignment main Ctor
for(Int_t i=0; i<18;i++)
for(Int_t j=0; j<5; j++)
AliTOFAlignment& AliTOFAlignment::operator=(const AliTOFAlignment &t){
//AliTOFAlignment assignment operator
- this->fNTOFAlignObj=t.fNTOFAlignObj;
- this->fTOFmgr=t.fTOFmgr;
- this->fTOFAlignObjArray=t.fTOFAlignObjArray;
+ if (&t == this)
+ return *this;
+
+ TTask::operator=(t);
+ fNTOFAlignObj=t.fNTOFAlignObj;
+ fTOFmgr=t.fTOFmgr;
+ fTOFAlignObjArray=t.fTOFAlignObjArray;
return *this;
}
}
//_____________________________________________________________________________
-void AliTOFAlignment::Smear( Float_t *tr, Float_t *rot)
+void AliTOFAlignment::Smear(Float_t * const tr, Float_t * const rot)
{
//Introduce Random Offset/Tilts
fTOFAlignObjArray = new TObjArray(kMaxAlignObj);
}
//_____________________________________________________________________________
-void AliTOFAlignment::Align( Float_t *tr, Float_t *rot)
+void AliTOFAlignment::Align(Float_t * const tr, Float_t * const rot)
{
//Introduce Offset/Tilts
AliInfo(Form("Number of Alignable Volumes: %d",fNTOFAlignObj));
}
//_____________________________________________________________________________
-void AliTOFAlignment::WriteParOnCDB(Char_t *sel, Int_t minrun, Int_t maxrun)
+void AliTOFAlignment::WriteParOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun)
{
//Write Align Par on CDB
AliCDBManager *man = AliCDBManager::Instance();
- Char_t *sel1 = "AlignPar" ;
+ const Char_t *sel1 = "AlignPar" ;
Char_t out[100];
sprintf(out,"%s/%s",sel,sel1);
AliCDBId idTOFAlign(out,minrun,maxrun);
man->Put(fTOFAlignObjArray,idTOFAlign,mdTOFAlign);
}
//_____________________________________________________________________________
-void AliTOFAlignment::ReadParFromCDB(Char_t *sel, Int_t nrun)
+void AliTOFAlignment::ReadParFromCDB(const Char_t *sel, Int_t nrun)
{
//Read Align Par from CDB
AliCDBManager *man = AliCDBManager::Instance();
- Char_t *sel1 = "AlignPar" ;
+ const Char_t *sel1 = "AlignPar" ;
Char_t out[100];
sprintf(out,"%s/%s",sel,sel1);
AliCDBEntry *entry = man->Get(out,nrun);
}
//_____________________________________________________________________________
-void AliTOFAlignment::WriteSimParOnCDB(Char_t *sel, Int_t minrun, Int_t maxrun)
+void AliTOFAlignment::WriteSimParOnCDB(const Char_t *sel, Int_t minrun, Int_t maxrun)
{
//Write Sim Align Par on CDB
AliCDBManager *man = AliCDBManager::Instance();
- Char_t *sel1 = "AlignSimPar" ;
+ const Char_t *sel1 = "AlignSimPar" ;
Char_t out[100];
sprintf(out,"%s/%s",sel,sel1);
AliCDBId idTOFAlign(out,minrun,maxrun);
man->Put(fTOFAlignObjArray,idTOFAlign,mdTOFAlign);
}
//_____________________________________________________________________________
-void AliTOFAlignment::ReadSimParFromCDB(Char_t *sel, Int_t nrun){
+void AliTOFAlignment::ReadSimParFromCDB(const Char_t *sel, Int_t nrun){
//Read Sim Align Par from CDB
AliCDBManager *man = AliCDBManager::Instance();
- Char_t *sel1 = "AlignSimPar" ;
+ const Char_t *sel1 = "AlignSimPar" ;
Char_t out[100];
sprintf(out,"%s/%s",sel,sel1);
AliCDBEntry *entry = man->Get(out,nrun);
}
//_____________________________________________________________________________
-void AliTOFAlignment::InsertMisAlignment(Float_t *mis)
+void AliTOFAlignment::InsertMisAlignment(Float_t * const mis)
{
// Now Apply the Displacements and store the misaligned FM positions...
//
Int_t nfm=0;
Int_t nsm=0;
Long64_t totdata[72]={0};
- AliSurveyObj *so = new AliSurveyObj();
- for (Int_t i=0;i<nf; i++)
+
+ for (Int_t ii=0;ii<nf; ii++)
{
- const Char_t *nome=namefiles[i];
+ AliSurveyObj *so = new AliSurveyObj();
+ const Char_t *nome=namefiles[ii];
so->FillFromLocalFile(nome);
TObjArray *points = so->GetData();
Int_t nSurveyPoint=points->GetEntries();
- for(Int_t i=0;i<nSurveyPoint;i++){
- const char* pointName= ((AliSurveyPoint *) points->At(i))->GetPointName().Data();
+ for(Int_t jj=0;jj<nSurveyPoint;jj++){
+ const char* pointName= ((AliSurveyPoint *) points->At(jj))->GetPointName().Data();
nfm=atoi(&pointName[6]);
nsm=atoi(&pointName[2]);
- data[nsm*4+nfm][0][totdata[nsm*4+nfm]]=((AliSurveyPoint *) points->At(i))->GetX();
- data[nsm*4+nfm][2][totdata[nsm*4+nfm]]=((AliSurveyPoint *) points->At(i))->GetY();
- data[nsm*4+nfm][4][totdata[nsm*4+nfm]]=((AliSurveyPoint *) points->At(i))->GetZ();
- data[nsm*4+nfm][1][totdata[nsm*4+nfm]]=((AliSurveyPoint *) points->At(i))->GetPrecisionX();
- data[nsm*4+nfm][3][totdata[nsm*4+nfm]]=((AliSurveyPoint *) points->At(i))->GetPrecisionY();
- data[nsm*4+nfm][5][totdata[nsm*4+nfm]]=((AliSurveyPoint *) points->At(i))->GetPrecisionZ();
+ data[nsm*4+nfm][0][totdata[nsm*4+nfm]]=((AliSurveyPoint *) points->At(jj))->GetX();
+ data[nsm*4+nfm][2][totdata[nsm*4+nfm]]=((AliSurveyPoint *) points->At(jj))->GetY();
+ data[nsm*4+nfm][4][totdata[nsm*4+nfm]]=((AliSurveyPoint *) points->At(jj))->GetZ();
+ data[nsm*4+nfm][1][totdata[nsm*4+nfm]]=((AliSurveyPoint *) points->At(jj))->GetPrecisionX();
+ data[nsm*4+nfm][3][totdata[nsm*4+nfm]]=((AliSurveyPoint *) points->At(jj))->GetPrecisionY();
+ data[nsm*4+nfm][5][totdata[nsm*4+nfm]]=((AliSurveyPoint *) points->At(jj))->GetPrecisionZ();
totdata[nsm*4+nfm]=totdata[nsm*4+nfm]+1;
}
+ delete so;
}
- // delete so;
-
+
for(Int_t i=0; i<72 ;i++){
Float_t numx=0, numy=0,numz=0, comodox=0, comodoy=0, comodoz=0,denx=0, deny=0, denz=0;
if(totdata[i]!=0){
f.cd();
f.WriteObject(fTOFAlignObjArray,"TOFAlignObjs","kSingleKey");
f.Close();
+
}