ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/


///////////////////////////////////////////////////////////////////////////////
//                                                                           //
//  Class to generate DCS data base entries                                  //
//  Author: Haavard Helstrup                                                 //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////





// TTimeStamp startTime(2006,10,18,0,0,0,0,kFALSE)
// TTimeStamp endTime(2006,10,19,0,0,0,0,kFALSE)
// Int_t run=2546
// AliDCSGenDB db
// db->SetDefaultStorage("local:///afs/cern.ch/alice/tpctest/AliRoot/HEAD");
// db->SetSpecificStorage("local:///afs/cern.ch/alice/tpctest/Calib/");
// db->Init(run,"TPC/Config/Pressure","TPC/*/*")
// db->MakeCalib("PressureSensor.txt","DCSMap.root",startTime,endTime,firstRun,lastRun,"TPC/Calib/Pressure")


#include "AliDCSGenDB.h"
#include "AliLog.h"
#include "ARVersion.h"

const Int_t kBeamPeriod=2;

ClassImp(AliDCSGenDB)

//______________________________________________________________________________________________

AliDCSGenDB::AliDCSGenDB():
  fFirstRun(0),
  fLastRun(0),
  fSpecificStorage(0),
  fDefaultStorage(0),
  fSensor(0),
  fStorLoc(0),
  fMetaData(0),
  fConfTree(0)
  //
  //  standard constructor
  //
{}

//______________________________________________________________________________________________

AliDCSGenDB::AliDCSGenDB(const char* defaultStorage, const char* specificStorage):
  fFirstRun(0),
  fLastRun(0),
  fSpecificStorage(specificStorage),
  fDefaultStorage(defaultStorage),
  fSensor(0),
  fStorLoc(0),
  fMetaData(0),
  fConfTree(0)
  //
  //  special constructor
  //
{}

//______________________________________________________________________________________________

AliDCSGenDB::AliDCSGenDB(const AliDCSGenDB& org):
  TObject(org),
  fFirstRun(org.fFirstRun),
  fLastRun(org.fLastRun),
  fSpecificStorage(org.fSpecificStorage),
  fDefaultStorage(org.fDefaultStorage),
  fSensor(0),
  fStorLoc(0),
  fMetaData(0),
  fConfTree(0)
{
  //
  //  Copy constructor
  //

  AliError("copy constructor not implemented");

}

//______________________________________________________________________________________________
AliDCSGenDB::~AliDCSGenDB(){
  //
  // destructor
  //
  delete fSensor;
  delete fMetaData;
  delete fConfTree;
}

//______________________________________________________________________________________________
AliDCSGenDB& AliDCSGenDB::operator= (const AliDCSGenDB& /*org*/ )
{
  //
  // assignment operator
  //
  AliError("assignment operator not implemented");
  return *this;

}

//______________________________________________________________________________________________

void AliDCSGenDB::MakeCalib(const char *list, const char *mapDCS,
    const TTimeStamp& startTime,
    const TTimeStamp& endTime,
    Int_t firstRun, Int_t lastRun, const char *calibDir )
{

  // Generate calibration entry from DCS map
  // Configuration read from ASCII file specified by list

  TClonesArray *arr = ReadList(list);
  fSensor = new AliDCSSensorArray(arr);
  fSensor->SetStartTime(startTime);
  fSensor->SetEndTime(endTime);
  TMap* map = SetGraphFile(mapDCS);
  if (map) {
    fSensor->MakeSplineFit(map);
  }
  delete map;
  map=0;
  mapDCS=0;

  SetFirstRun(firstRun);
  SetLastRun(lastRun);

  StoreObject(calibDir, fSensor, fMetaData);
}

//______________________________________________________________________________________________
void AliDCSGenDB::MakeConfig(const char *file, Int_t firstRun, Int_t lastRun, const char *confDir )
{
  //
  // Store Configuration file to OCDB
  //

  TTree *tree = ReadListTree(file);
  SetConfTree(tree);
  SetFirstRun(firstRun);
  SetLastRun(lastRun);

  StoreObject(confDir, fConfTree, fMetaData);
}




//______________________________________________________________________________________________
AliCDBMetaData* AliDCSGenDB::CreateMetaObject(const char* objectClassName)
{
  AliCDBMetaData *md1= new AliCDBMetaData();
  md1->SetObjectClassName(objectClassName);
  md1->SetResponsible("Haavard Helstrup");
  md1->SetBeamPeriod(kBeamPeriod);
  md1->SetAliRootVersion(ALIROOT_BRANCH);

  return md1;
}

//______________________________________________________________________________________________
void AliDCSGenDB::StoreObject(const char* cdbPath, TObject* object, AliCDBMetaData* metaData)
{

  AliCDBId id1(cdbPath, fFirstRun, fLastRun);
  if (fStorLoc) fStorLoc->Put(object, id1, metaData);
}

//______________________________________________________________________________________________
void AliDCSGenDB::Init(Int_t run, const char *configDir, 
    const char *specificDir,
    const char *sensorClass)
{

  fMetaData = CreateMetaObject(sensorClass);
  AliCDBManager *man = AliCDBManager::Instance();
  man->SetDefaultStorage(fDefaultStorage);
  man->SetRun(run);
  man->SetSpecificStorage(specificDir,fSpecificStorage);
  AliCDBEntry *config = man->Get(configDir);
  if (config) fConfTree = (TTree*)config->GetObject();
  fStorLoc = man->GetStorage(fSpecificStorage);
  if (!fStorLoc)    return;

  /*Bool_t cdbCache = */AliCDBManager::Instance()->GetCacheFlag(); // save cache status
  AliCDBManager::Instance()->SetCacheFlag(kTRUE); // activate CDB cache


}

//______________________________________________________________________________________________


//_____________________________________________________________________________
TMap* AliDCSGenDB::SetGraphFile(const char *fname)
{
  //
  // Read DCS maps from file given by fname
  //
  TFile file(fname);
  TMap * map = (TMap*)file.Get("DCSMap");
  return map;
}

//______________________________________________________________________________________________

TClonesArray * AliDCSGenDB::ReadList(const char *fname, const char *title) {
  //
  // read values from ascii file
  //
  TTree* tree = new TTree(title,title);
  tree->ReadFile(fname,"");
  TClonesArray *arr = AliDCSSensor::ReadTree(tree);
  delete tree;
  return arr;
}

//______________________________________________________________________________________________

TTree * AliDCSGenDB::ReadListTree(const char *fname, const char *title) {
  //
  // read values from ascii file
  //
  TTree* tree = new TTree(title,title);
  tree->ReadFile(fname,"");
  TClonesArray *arr = AliDCSSensor::ReadTree(tree);
  arr->Delete();
  delete arr;
  return tree;
}



 AliDCSGenDB.cxx:1
 AliDCSGenDB.cxx:2
 AliDCSGenDB.cxx:3
 AliDCSGenDB.cxx:4
 AliDCSGenDB.cxx:5
 AliDCSGenDB.cxx:6
 AliDCSGenDB.cxx:7
 AliDCSGenDB.cxx:8
 AliDCSGenDB.cxx:9
 AliDCSGenDB.cxx:10
 AliDCSGenDB.cxx:11
 AliDCSGenDB.cxx:12
 AliDCSGenDB.cxx:13
 AliDCSGenDB.cxx:14
 AliDCSGenDB.cxx:15
 AliDCSGenDB.cxx:16
 AliDCSGenDB.cxx:17
 AliDCSGenDB.cxx:18
 AliDCSGenDB.cxx:19
 AliDCSGenDB.cxx:20
 AliDCSGenDB.cxx:21
 AliDCSGenDB.cxx:22
 AliDCSGenDB.cxx:23
 AliDCSGenDB.cxx:24
 AliDCSGenDB.cxx:25
 AliDCSGenDB.cxx:26
 AliDCSGenDB.cxx:27
 AliDCSGenDB.cxx:28
 AliDCSGenDB.cxx:29
 AliDCSGenDB.cxx:30
 AliDCSGenDB.cxx:31
 AliDCSGenDB.cxx:32
 AliDCSGenDB.cxx:33
 AliDCSGenDB.cxx:34
 AliDCSGenDB.cxx:35
 AliDCSGenDB.cxx:36
 AliDCSGenDB.cxx:37
 AliDCSGenDB.cxx:38
 AliDCSGenDB.cxx:39
 AliDCSGenDB.cxx:40
 AliDCSGenDB.cxx:41
 AliDCSGenDB.cxx:42
 AliDCSGenDB.cxx:43
 AliDCSGenDB.cxx:44
 AliDCSGenDB.cxx:45
 AliDCSGenDB.cxx:46
 AliDCSGenDB.cxx:47
 AliDCSGenDB.cxx:48
 AliDCSGenDB.cxx:49
 AliDCSGenDB.cxx:50
 AliDCSGenDB.cxx:51
 AliDCSGenDB.cxx:52
 AliDCSGenDB.cxx:53
 AliDCSGenDB.cxx:54
 AliDCSGenDB.cxx:55
 AliDCSGenDB.cxx:56
 AliDCSGenDB.cxx:57
 AliDCSGenDB.cxx:58
 AliDCSGenDB.cxx:59
 AliDCSGenDB.cxx:60
 AliDCSGenDB.cxx:61
 AliDCSGenDB.cxx:62
 AliDCSGenDB.cxx:63
 AliDCSGenDB.cxx:64
 AliDCSGenDB.cxx:65
 AliDCSGenDB.cxx:66
 AliDCSGenDB.cxx:67
 AliDCSGenDB.cxx:68
 AliDCSGenDB.cxx:69
 AliDCSGenDB.cxx:70
 AliDCSGenDB.cxx:71
 AliDCSGenDB.cxx:72
 AliDCSGenDB.cxx:73
 AliDCSGenDB.cxx:74
 AliDCSGenDB.cxx:75
 AliDCSGenDB.cxx:76
 AliDCSGenDB.cxx:77
 AliDCSGenDB.cxx:78
 AliDCSGenDB.cxx:79
 AliDCSGenDB.cxx:80
 AliDCSGenDB.cxx:81
 AliDCSGenDB.cxx:82
 AliDCSGenDB.cxx:83
 AliDCSGenDB.cxx:84
 AliDCSGenDB.cxx:85
 AliDCSGenDB.cxx:86
 AliDCSGenDB.cxx:87
 AliDCSGenDB.cxx:88
 AliDCSGenDB.cxx:89
 AliDCSGenDB.cxx:90
 AliDCSGenDB.cxx:91
 AliDCSGenDB.cxx:92
 AliDCSGenDB.cxx:93
 AliDCSGenDB.cxx:94
 AliDCSGenDB.cxx:95
 AliDCSGenDB.cxx:96
 AliDCSGenDB.cxx:97
 AliDCSGenDB.cxx:98
 AliDCSGenDB.cxx:99
 AliDCSGenDB.cxx:100
 AliDCSGenDB.cxx:101
 AliDCSGenDB.cxx:102
 AliDCSGenDB.cxx:103
 AliDCSGenDB.cxx:104
 AliDCSGenDB.cxx:105
 AliDCSGenDB.cxx:106
 AliDCSGenDB.cxx:107
 AliDCSGenDB.cxx:108
 AliDCSGenDB.cxx:109
 AliDCSGenDB.cxx:110
 AliDCSGenDB.cxx:111
 AliDCSGenDB.cxx:112
 AliDCSGenDB.cxx:113
 AliDCSGenDB.cxx:114
 AliDCSGenDB.cxx:115
 AliDCSGenDB.cxx:116
 AliDCSGenDB.cxx:117
 AliDCSGenDB.cxx:118
 AliDCSGenDB.cxx:119
 AliDCSGenDB.cxx:120
 AliDCSGenDB.cxx:121
 AliDCSGenDB.cxx:122
 AliDCSGenDB.cxx:123
 AliDCSGenDB.cxx:124
 AliDCSGenDB.cxx:125
 AliDCSGenDB.cxx:126
 AliDCSGenDB.cxx:127
 AliDCSGenDB.cxx:128
 AliDCSGenDB.cxx:129
 AliDCSGenDB.cxx:130
 AliDCSGenDB.cxx:131
 AliDCSGenDB.cxx:132
 AliDCSGenDB.cxx:133
 AliDCSGenDB.cxx:134
 AliDCSGenDB.cxx:135
 AliDCSGenDB.cxx:136
 AliDCSGenDB.cxx:137
 AliDCSGenDB.cxx:138
 AliDCSGenDB.cxx:139
 AliDCSGenDB.cxx:140
 AliDCSGenDB.cxx:141
 AliDCSGenDB.cxx:142
 AliDCSGenDB.cxx:143
 AliDCSGenDB.cxx:144
 AliDCSGenDB.cxx:145
 AliDCSGenDB.cxx:146
 AliDCSGenDB.cxx:147
 AliDCSGenDB.cxx:148
 AliDCSGenDB.cxx:149
 AliDCSGenDB.cxx:150
 AliDCSGenDB.cxx:151
 AliDCSGenDB.cxx:152
 AliDCSGenDB.cxx:153
 AliDCSGenDB.cxx:154
 AliDCSGenDB.cxx:155
 AliDCSGenDB.cxx:156
 AliDCSGenDB.cxx:157
 AliDCSGenDB.cxx:158
 AliDCSGenDB.cxx:159
 AliDCSGenDB.cxx:160
 AliDCSGenDB.cxx:161
 AliDCSGenDB.cxx:162
 AliDCSGenDB.cxx:163
 AliDCSGenDB.cxx:164
 AliDCSGenDB.cxx:165
 AliDCSGenDB.cxx:166
 AliDCSGenDB.cxx:167
 AliDCSGenDB.cxx:168
 AliDCSGenDB.cxx:169
 AliDCSGenDB.cxx:170
 AliDCSGenDB.cxx:171
 AliDCSGenDB.cxx:172
 AliDCSGenDB.cxx:173
 AliDCSGenDB.cxx:174
 AliDCSGenDB.cxx:175
 AliDCSGenDB.cxx:176
 AliDCSGenDB.cxx:177
 AliDCSGenDB.cxx:178
 AliDCSGenDB.cxx:179
 AliDCSGenDB.cxx:180
 AliDCSGenDB.cxx:181
 AliDCSGenDB.cxx:182
 AliDCSGenDB.cxx:183
 AliDCSGenDB.cxx:184
 AliDCSGenDB.cxx:185
 AliDCSGenDB.cxx:186
 AliDCSGenDB.cxx:187
 AliDCSGenDB.cxx:188
 AliDCSGenDB.cxx:189
 AliDCSGenDB.cxx:190
 AliDCSGenDB.cxx:191
 AliDCSGenDB.cxx:192
 AliDCSGenDB.cxx:193
 AliDCSGenDB.cxx:194
 AliDCSGenDB.cxx:195
 AliDCSGenDB.cxx:196
 AliDCSGenDB.cxx:197
 AliDCSGenDB.cxx:198
 AliDCSGenDB.cxx:199
 AliDCSGenDB.cxx:200
 AliDCSGenDB.cxx:201
 AliDCSGenDB.cxx:202
 AliDCSGenDB.cxx:203
 AliDCSGenDB.cxx:204
 AliDCSGenDB.cxx:205
 AliDCSGenDB.cxx:206
 AliDCSGenDB.cxx:207
 AliDCSGenDB.cxx:208
 AliDCSGenDB.cxx:209
 AliDCSGenDB.cxx:210
 AliDCSGenDB.cxx:211
 AliDCSGenDB.cxx:212
 AliDCSGenDB.cxx:213
 AliDCSGenDB.cxx:214
 AliDCSGenDB.cxx:215
 AliDCSGenDB.cxx:216
 AliDCSGenDB.cxx:217
 AliDCSGenDB.cxx:218
 AliDCSGenDB.cxx:219
 AliDCSGenDB.cxx:220
 AliDCSGenDB.cxx:221
 AliDCSGenDB.cxx:222
 AliDCSGenDB.cxx:223
 AliDCSGenDB.cxx:224
 AliDCSGenDB.cxx:225
 AliDCSGenDB.cxx:226
 AliDCSGenDB.cxx:227
 AliDCSGenDB.cxx:228
 AliDCSGenDB.cxx:229
 AliDCSGenDB.cxx:230
 AliDCSGenDB.cxx:231
 AliDCSGenDB.cxx:232
 AliDCSGenDB.cxx:233
 AliDCSGenDB.cxx:234
 AliDCSGenDB.cxx:235
 AliDCSGenDB.cxx:236
 AliDCSGenDB.cxx:237
 AliDCSGenDB.cxx:238
 AliDCSGenDB.cxx:239
 AliDCSGenDB.cxx:240
 AliDCSGenDB.cxx:241
 AliDCSGenDB.cxx:242
 AliDCSGenDB.cxx:243
 AliDCSGenDB.cxx:244
 AliDCSGenDB.cxx:245
 AliDCSGenDB.cxx:246
 AliDCSGenDB.cxx:247
 AliDCSGenDB.cxx:248
 AliDCSGenDB.cxx:249
 AliDCSGenDB.cxx:250
 AliDCSGenDB.cxx:251