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 **************************************************************************/
16 #include "Riostream.h"
19 #include "TClonesArray.h"
21 #include "AliSurveyToAlignObjs.h"
22 #include "AliSurveyPoint.h"
23 #include "AliAlignObjParams.h"
27 #include "AliCDBManager.h"
28 #include "AliCDBEntry.h"
29 #include "AliCDBStorage.h"
30 #include "AliCDBMetaData.h"
32 ClassImp(AliSurveyToAlignObjs)
34 //________________________________________________________________________
35 AliSurveyToAlignObjs::AliSurveyToAlignObjs() :
37 fSurveyObj(new AliSurveyObj()),
39 fAlignObjArray(new TClonesArray("AliAlignObjParams",10)),
43 // default constructor
47 //_________________________________________________________________________
48 AliSurveyToAlignObjs::AliSurveyToAlignObjs(const AliSurveyToAlignObjs &s2aObj) :
50 fSurveyObj(s2aObj.fSurveyObj),
51 fSurveyPoints(s2aObj.fSurveyPoints),
52 fAlignObjArray(s2aObj.fAlignObjArray),
53 fAlignObj(s2aObj.fAlignObj)
58 //__________________________________________________________________________
59 AliSurveyToAlignObjs & AliSurveyToAlignObjs::operator= (const AliSurveyToAlignObjs &s2aObj) {
61 // assignment operator
64 TObject::operator(s2aObj);
65 fSurveyObj = s2aObj.fSurveyObj;
66 fSurveyPoints = s2aObj.fSurveyPoints;
67 fAlignObjArray = s2aObj.fAlignObjArray;
68 fAlignObj = s2aObj.fAlignObj;
73 //__________________________________________________________________________
74 AliSurveyToAlignObjs::~AliSurveyToAlignObjs()
81 delete fAlignObjArray;
85 //__________________________________________________________________________
86 Bool_t AliSurveyToAlignObjs::LoadSurveyFromLocalFile(const char* filename) {
87 // Load survey data from a formatted text file
91 //Load survey data from the local file
92 if(fSurveyObj->FillFromLocalFile(filename))
93 fSurveyPoints = fSurveyObj->GetData();
97 AliInfo(Form("%d survey points read",fSurveyPoints->GetEntries()));
102 //__________________________________________________________________________
103 Bool_t AliSurveyToAlignObjs::LoadSurveyFromAlienFile(const char* det, Int_t repNum, Int_t repVersion) {
104 // Load survey data from the formatted text file
105 // residing in the default location in alien
108 const char* alienUser=gSystem->Getenv("alien_API_USER");
109 if(fSurveyObj->Fill(det, repNum, repVersion, alienUser))
111 fSurveyPoints = fSurveyObj->GetData();
113 AliError("Error reading survey file from alien!");
117 AliInfo(Form("%d survey points read",fSurveyPoints->GetEntries()));
122 //_________________________________________________________________________
123 Bool_t AliSurveyToAlignObjs::StoreAlignObjToFile(const char* filename, const char* det){
124 // Stores the TClonesArray of alignment objects into the
125 // file specified as argument
127 TFile *f = TFile::Open(filename,"RECREATE");
129 AliError(Form("cannot open file %s\n",filename));
132 AliInfo(Form("Saving alignment objects into the file %s",filename));
133 TString arrayname(det);
134 arrayname+="AlignObjs";
137 f->WriteObject(fAlignObjArray,arrayname,"kSingleKey");
143 //_________________________________________________________________________
144 Bool_t AliSurveyToAlignObjs::StoreAlignObjToCDB(const char* cdbFolder, const char* det){
145 // Stores the TClonesArray of alignment objects into a
146 // CDB entry in the CDB folder specified by the argument
149 AliCDBManager* cdb = AliCDBManager::Instance();
150 cdb->SetDefaultStorage(cdbFolder);
153 AliCDBMetaData* md = new AliCDBMetaData();
154 md->SetComment(Form("Misalignment for subdetector %s from survey",det));
157 AliCDBId id(path.Data(),0,AliCDBRunRange::Infinity());
158 cdb->Put(fAlignObjArray,id,md);