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.                  *
 **************************************************************************/

/* $Id$ */

///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// class for T0 calibration                       TM--AM_6-02-2006         //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

#include "AliT0CalibData.h"
#include "AliT0LookUpValue.h"
#include "AliT0LookUpKey.h"
#include "AliLog.h"

#include <Riostream.h>

//#include <string>

using std::ifstream;
ClassImp(AliT0CalibData)

//________________________________________________________________
  AliT0CalibData::AliT0CalibData():   TNamed(),
				      fLookup(0),
				      fNumberOfTRMs(0)

{
  //
}

//________________________________________________________________
AliT0CalibData::AliT0CalibData(const char* name):TNamed(),
				      fLookup(0),
				      fNumberOfTRMs(0)
{
  TString namst = "Calib_";
  namst += name;
  SetName(namst.Data());
  SetTitle(namst.Data());

}

//________________________________________________________________
AliT0CalibData::AliT0CalibData(const AliT0CalibData& calibda) :
  TNamed(calibda),		
  fLookup(0),
  fNumberOfTRMs(0)

{
// copy constructor
  SetName(calibda.GetName());
  SetTitle(calibda.GetName());


}

//________________________________________________________________
AliT0CalibData &AliT0CalibData::operator =(const AliT0CalibData& calibda)
{
// assignment operator
  SetName(calibda.GetName());
  SetTitle(calibda.GetName());
 
  return *this;
}

//________________________________________________________________
AliT0CalibData::~AliT0CalibData()
{
  //
}
//________________________________________________________________
void  AliT0CalibData::PrintLookup(Option_t*, Int_t iTRM, Int_t iTDC, Int_t iChannel) const
{
  // print lookup table

  AliT0LookUpKey* lookkey; //= new AliT0LookUpKey();
  AliT0LookUpValue*  lookvalue= new AliT0LookUpValue();
  printf("Number Of TRMs in setup %i\n",GetNumberOfTRMs());

  iTRM=0; iTDC=0; Int_t chain=0; iChannel=0;

  for (Int_t ik=0; ik<105; ik++){
    lookvalue->SetTRM(iTRM);
    lookvalue->SetTDC(iTDC);
    lookvalue->SetChain(chain);
    lookvalue->SetChannel(iChannel);
    
    if (iChannel<6) iChannel +=2;
    else {iChannel = 0; iTDC++;}
    if(ik==57) { iTDC=0; iChannel=0; iTRM=1;}
   
  printf(" AliT0CalibData::PrintLookup ::start GetValue %i %i %i %i\n",iTRM, iTDC,chain, iChannel);
    lookkey = (AliT0LookUpKey*) fLookup.GetValue((TObject*)lookvalue);
    //    TString name= lookkey->GetChannelName();
    // cout<<name.Data()<<endl;
    if (lookkey)
      {
	TString name= lookkey->GetChannelName();
	/*	cout<<" lookup KEY!!! "<<name.Data()<<" "<<lookkey->GetKey()<<" VALUE "<<lookvalue->GetTRM()<<" "
	    <<lookvalue->GetTDC()<<" "
	    << lookvalue->GetChain()<<" "
	    <<lookvalue->GetChannel()<<endl;*/
      }
  }
  
}
//________________________________________________________________

void AliT0CalibData::ReadAsciiLookup(const Char_t *filename)
{
  // read lookup table from ascii file

  Int_t key, trm, tdc, chain, channel;

  if(filename == 0){
    AliError(Form("Please, specify file with database")) ;
    return ;
  }
  cout<<" read file "<<filename<<endl;

  ifstream lookup;
  lookup.open(filename);
  if(!lookup)
    {
     AliError(Form("!!!!!!!!!!!!!!No look up table in CDB!" ));
 
    }
  Char_t varname[11];
  Int_t ntrms;
  if(lookup)
    {
      lookup>>ntrms;
      //      fNumberOfTRMs=ntrms;
      SetNumberOfTRMs(ntrms);
      cout<<" N TRMS "<<ntrms<<endl;
       while(!lookup.eof())
	{
	  AliT0LookUpKey * lookkey= new AliT0LookUpKey();
	  AliT0LookUpValue * lookvalue= new AliT0LookUpValue();
	  
	  lookup>>varname>>key>>trm>>chain>>tdc>>channel;
	  lookvalue->SetTRM(trm);
	  lookvalue->SetTDC(tdc);
	  lookvalue->SetChain(chain);
	  lookvalue->SetChannel(channel);
	  lookkey->SetKey(key);
	  lookkey->SetChannelName(varname);
	  cout<<trm<<" "<<chain<<" "<<tdc<<" "<<channel<<" "<<key<<" "<<varname<<endl;
	  fLookup.Add((TObject*)lookvalue,(TObject*)lookkey);
	  
	}
      
      lookup.close();
      
    }
}
//________________________________________________________________

Int_t AliT0CalibData::GetChannel(Int_t trm,  Int_t tdc, Int_t chain, Int_t channel)
{
  // read number of channel according physical addres 


  AliT0LookUpKey * lookkey;//= new AliT0LookUpKey();
  AliT0LookUpValue * lookvalue= new AliT0LookUpValue(trm,tdc,chain,channel);

  lookkey = (AliT0LookUpKey*) fLookup.GetValue((TObject*)lookvalue);

  return lookkey->GetKey();

}

 AliT0CalibData.cxx:1
 AliT0CalibData.cxx:2
 AliT0CalibData.cxx:3
 AliT0CalibData.cxx:4
 AliT0CalibData.cxx:5
 AliT0CalibData.cxx:6
 AliT0CalibData.cxx:7
 AliT0CalibData.cxx:8
 AliT0CalibData.cxx:9
 AliT0CalibData.cxx:10
 AliT0CalibData.cxx:11
 AliT0CalibData.cxx:12
 AliT0CalibData.cxx:13
 AliT0CalibData.cxx:14
 AliT0CalibData.cxx:15
 AliT0CalibData.cxx:16
 AliT0CalibData.cxx:17
 AliT0CalibData.cxx:18
 AliT0CalibData.cxx:19
 AliT0CalibData.cxx:20
 AliT0CalibData.cxx:21
 AliT0CalibData.cxx:22
 AliT0CalibData.cxx:23
 AliT0CalibData.cxx:24
 AliT0CalibData.cxx:25
 AliT0CalibData.cxx:26
 AliT0CalibData.cxx:27
 AliT0CalibData.cxx:28
 AliT0CalibData.cxx:29
 AliT0CalibData.cxx:30
 AliT0CalibData.cxx:31
 AliT0CalibData.cxx:32
 AliT0CalibData.cxx:33
 AliT0CalibData.cxx:34
 AliT0CalibData.cxx:35
 AliT0CalibData.cxx:36
 AliT0CalibData.cxx:37
 AliT0CalibData.cxx:38
 AliT0CalibData.cxx:39
 AliT0CalibData.cxx:40
 AliT0CalibData.cxx:41
 AliT0CalibData.cxx:42
 AliT0CalibData.cxx:43
 AliT0CalibData.cxx:44
 AliT0CalibData.cxx:45
 AliT0CalibData.cxx:46
 AliT0CalibData.cxx:47
 AliT0CalibData.cxx:48
 AliT0CalibData.cxx:49
 AliT0CalibData.cxx:50
 AliT0CalibData.cxx:51
 AliT0CalibData.cxx:52
 AliT0CalibData.cxx:53
 AliT0CalibData.cxx:54
 AliT0CalibData.cxx:55
 AliT0CalibData.cxx:56
 AliT0CalibData.cxx:57
 AliT0CalibData.cxx:58
 AliT0CalibData.cxx:59
 AliT0CalibData.cxx:60
 AliT0CalibData.cxx:61
 AliT0CalibData.cxx:62
 AliT0CalibData.cxx:63
 AliT0CalibData.cxx:64
 AliT0CalibData.cxx:65
 AliT0CalibData.cxx:66
 AliT0CalibData.cxx:67
 AliT0CalibData.cxx:68
 AliT0CalibData.cxx:69
 AliT0CalibData.cxx:70
 AliT0CalibData.cxx:71
 AliT0CalibData.cxx:72
 AliT0CalibData.cxx:73
 AliT0CalibData.cxx:74
 AliT0CalibData.cxx:75
 AliT0CalibData.cxx:76
 AliT0CalibData.cxx:77
 AliT0CalibData.cxx:78
 AliT0CalibData.cxx:79
 AliT0CalibData.cxx:80
 AliT0CalibData.cxx:81
 AliT0CalibData.cxx:82
 AliT0CalibData.cxx:83
 AliT0CalibData.cxx:84
 AliT0CalibData.cxx:85
 AliT0CalibData.cxx:86
 AliT0CalibData.cxx:87
 AliT0CalibData.cxx:88
 AliT0CalibData.cxx:89
 AliT0CalibData.cxx:90
 AliT0CalibData.cxx:91
 AliT0CalibData.cxx:92
 AliT0CalibData.cxx:93
 AliT0CalibData.cxx:94
 AliT0CalibData.cxx:95
 AliT0CalibData.cxx:96
 AliT0CalibData.cxx:97
 AliT0CalibData.cxx:98
 AliT0CalibData.cxx:99
 AliT0CalibData.cxx:100
 AliT0CalibData.cxx:101
 AliT0CalibData.cxx:102
 AliT0CalibData.cxx:103
 AliT0CalibData.cxx:104
 AliT0CalibData.cxx:105
 AliT0CalibData.cxx:106
 AliT0CalibData.cxx:107
 AliT0CalibData.cxx:108
 AliT0CalibData.cxx:109
 AliT0CalibData.cxx:110
 AliT0CalibData.cxx:111
 AliT0CalibData.cxx:112
 AliT0CalibData.cxx:113
 AliT0CalibData.cxx:114
 AliT0CalibData.cxx:115
 AliT0CalibData.cxx:116
 AliT0CalibData.cxx:117
 AliT0CalibData.cxx:118
 AliT0CalibData.cxx:119
 AliT0CalibData.cxx:120
 AliT0CalibData.cxx:121
 AliT0CalibData.cxx:122
 AliT0CalibData.cxx:123
 AliT0CalibData.cxx:124
 AliT0CalibData.cxx:125
 AliT0CalibData.cxx:126
 AliT0CalibData.cxx:127
 AliT0CalibData.cxx:128
 AliT0CalibData.cxx:129
 AliT0CalibData.cxx:130
 AliT0CalibData.cxx:131
 AliT0CalibData.cxx:132
 AliT0CalibData.cxx:133
 AliT0CalibData.cxx:134
 AliT0CalibData.cxx:135
 AliT0CalibData.cxx:136
 AliT0CalibData.cxx:137
 AliT0CalibData.cxx:138
 AliT0CalibData.cxx:139
 AliT0CalibData.cxx:140
 AliT0CalibData.cxx:141
 AliT0CalibData.cxx:142
 AliT0CalibData.cxx:143
 AliT0CalibData.cxx:144
 AliT0CalibData.cxx:145
 AliT0CalibData.cxx:146
 AliT0CalibData.cxx:147
 AliT0CalibData.cxx:148
 AliT0CalibData.cxx:149
 AliT0CalibData.cxx:150
 AliT0CalibData.cxx:151
 AliT0CalibData.cxx:152
 AliT0CalibData.cxx:153
 AliT0CalibData.cxx:154
 AliT0CalibData.cxx:155
 AliT0CalibData.cxx:156
 AliT0CalibData.cxx:157
 AliT0CalibData.cxx:158
 AliT0CalibData.cxx:159
 AliT0CalibData.cxx:160
 AliT0CalibData.cxx:161
 AliT0CalibData.cxx:162
 AliT0CalibData.cxx:163
 AliT0CalibData.cxx:164
 AliT0CalibData.cxx:165
 AliT0CalibData.cxx:166
 AliT0CalibData.cxx:167
 AliT0CalibData.cxx:168
 AliT0CalibData.cxx:169
 AliT0CalibData.cxx:170
 AliT0CalibData.cxx:171
 AliT0CalibData.cxx:172
 AliT0CalibData.cxx:173
 AliT0CalibData.cxx:174
 AliT0CalibData.cxx:175
 AliT0CalibData.cxx:176
 AliT0CalibData.cxx:177
 AliT0CalibData.cxx:178
 AliT0CalibData.cxx:179
 AliT0CalibData.cxx:180
 AliT0CalibData.cxx:181
 AliT0CalibData.cxx:182
 AliT0CalibData.cxx:183
 AliT0CalibData.cxx:184
 AliT0CalibData.cxx:185
 AliT0CalibData.cxx:186
 AliT0CalibData.cxx:187