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() :
42 // default constructor
43 fSurveyObj = new AliSurveyObj();
44 fAlignObjArray = new TClonesArray("AliAlignObjParams",10);
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
62 fSurveyObj = s2aObj.fSurveyObj;
63 fSurveyPoints = s2aObj.fSurveyPoints;
64 fAlignObjArray = s2aObj.fAlignObjArray;
65 fAlignObj = s2aObj.fAlignObj;
69 //__________________________________________________________________________
70 AliSurveyToAlignObjs::~AliSurveyToAlignObjs() {
74 if(fSurveyObj) delete fSurveyObj;
75 if(fSurveyPoints) delete fSurveyPoints;
76 if(fAlignObjArray) delete fAlignObjArray;
77 if(fAlignObj) delete fAlignObj;
80 //__________________________________________________________________________
81 Bool_t AliSurveyToAlignObjs::LoadSurveyFromLocalFile(const char* filename) {
82 // Load survey data from a formatted text file
86 //Load survey data from the local file
87 if(fSurveyObj->FillFromLocalFile(filename))
88 fSurveyPoints = fSurveyObj->GetData();
92 AliInfo(Form("%d survey points read",fSurveyPoints->GetEntries()));
97 //__________________________________________________________________________
98 Bool_t AliSurveyToAlignObjs::LoadSurveyFromAlienFile(const char* det, Int_t repNum, Int_t repVersion) {
99 // Load survey data from the formatted text file
100 // residing in the default location in alien
103 const char* alienUser=gSystem->Getenv("alien_API_USER");
104 if(fSurveyObj->Fill(det, repNum, repVersion, alienUser))
106 fSurveyPoints = fSurveyObj->GetData();
108 AliError("Error reading survey file from alien!");
112 AliInfo(Form("%d survey points read",fSurveyPoints->GetEntries()));
117 //_________________________________________________________________________
118 Bool_t AliSurveyToAlignObjs::StoreAlignObjToFile(const char* filename, const char* det){
119 // Stores the TClonesArray of alignment objects into the
120 // file specified as argument
122 TFile *f = TFile::Open(filename,"RECREATE");
124 AliError(Form("cannot open file %s\n",filename));
127 AliInfo(Form("Saving alignment objects into the file %s",filename));
128 TString arrayname(det);
129 arrayname+="AlignObjs";
132 f->WriteObject(fAlignObjArray,arrayname,"kSingleKey");
138 //_________________________________________________________________________
139 Bool_t AliSurveyToAlignObjs::StoreAlignObjToCDB(const char* cdbFolder, const char* det){
140 // Stores the TClonesArray of alignment objects into a
141 // CDB entry in the CDB folder specified by the argument
144 AliCDBManager* cdb = AliCDBManager::Instance();
145 cdb->SetDefaultStorage(cdbFolder);
148 AliCDBMetaData* md = new AliCDBMetaData();
149 md->SetComment(Form("Misalignment for subdetector %d from survey",det));
152 AliCDBId id(path.Data(),0,AliCDBRunRange::Infinity());
153 cdb->Put(fAlignObjArray,id,md);