// Eventually, this class will use the Conditions DB to get the
// various parameters, which code can then request from here.
//
+#include "AliT0.h"
#include "AliLog.h"
#include "AliT0Parameters.h"
#include "AliT0CalibData.h"
+#include "AliT0CalibWalk.h"
+#include "AliT0CalibTimeEq.h"
+#include "AliT0LookUpKey.h"
#include "AliT0LookUpValue.h"
#include <AliCDBManager.h>
#include <AliCDBEntry.h>
#include <AliCDBStorage.h>
#include <TMath.h>
#include <TSystem.h>
-#include <Riostream.h>
+//#include <Riostream.h>
#include <TGeoManager.h>
#include <TGeoPhysicalNode.h>
+#include <TGeoMatrix.h>
#include <AliGeomManager.h>
-AliT0CalibData* AliT0Parameters::fgCalibData = 0;
+AliT0CalibTimeEq* AliT0Parameters::fgCalibData = 0;
AliT0CalibData* AliT0Parameters::fgLookUp = 0;
-AliT0CalibData* AliT0Parameters::fgSlewCorr =0;
+AliT0CalibWalk* AliT0Parameters::fgSlewCorr =0;
//====================================================================
ClassImp(AliT0Parameters)
#if 0
fAmpLEDRec(0),
fPMTeff(),
fWalk(0),
- fTimeDelayDA(0),
fTimeDelayCFD(0),
+ // fTimeV0(0),
fTimeDelayTVD(0),
- fMeanT0(500),
+ fMeanT0(512),
fLookUp(0),
fNumberOfTRMs(2),
fCalibentry(), fLookUpentry(),fSlewCorr()
//time equalizing
fCalibentry = stor->Get("T0/Calib/TimeDelay");
if (fCalibentry)
- fgCalibData = (AliT0CalibData*)fCalibentry->GetObject();
+ fgCalibData = (AliT0CalibTimeEq*)fCalibentry->GetObject();
else {
AliFatal(" ALARM !!!! No time delays in CDB ");
fIsInit = kFALSE;
//slewing correction
fSlewCorr = stor->Get("T0/Calib/Slewing_Walk");
if (fSlewCorr){
- fgSlewCorr = (AliT0CalibData*)fSlewCorr->GetObject();
+ fgSlewCorr = (AliT0CalibWalk*)fSlewCorr->GetObject();
}
else {
AliFatal(" ALARM !!!! No slewing correction in CDB ");
// for switching to this one should write
// AliT0RawReader myrawreader(rawReader);
// myrawreader.SetOnlineMode(kTRUE);
-
+
if (fIsInit) return;
//standart configuration (used for simulation)
//Int_t trm=0; Int_t tdc=0; Int_t chain=0; Int_t channel=0;
// configuration for test Jun07.
- fNumberOfTRMs = 2;
- Int_t trm=0; Int_t tdc=0; Int_t chain=0; Int_t channel=0;
+ fgLookUp = new AliT0CalibData("T0");
+
+ fNumberOfTRMs = 1;
+ fgLookUp-> SetNumberOfTRMs(fNumberOfTRMs);
+ Int_t trm=7; Int_t tdc=0; Int_t chain=0; Int_t channel=0;
for (Int_t ik=0; ik<105; ik++)
{
AliT0LookUpKey * lookkey= new AliT0LookUpKey();
lookvalue->SetChain(chain);
lookvalue->SetChannel(channel);
lookkey->SetKey(ik);
+ fgLookUp->GetMapLookup()->Add((TObject*)lookvalue,(TObject*)lookkey);
if (channel<6) channel +=2;
else {channel = 0; tdc++;}
- if(ik==57) { tdc=0; channel=0; trm=1;}
- fLookUp.Add((TObject*)lookvalue,(TObject*)lookkey);
+ if(ik==56) { tdc=0; channel=0; chain = 1;}
+
}
fIsInit=kTRUE;
}
//__________________________________________________________________
-
-Float_t
-AliT0Parameters::GetTimeDelayDA(Int_t ipmt)
-{
- // return time delay for LED channel
- //
- if (!fCalibentry) {
- fTimeDelayDA = 500;
- return fTimeDelayDA;
- }
- return fgCalibData ->GetTimeDelayDA(ipmt);
-}
-//__________________________________________________________________
Float_t
AliT0Parameters::GetTimeDelayCFD(Int_t ipmt)
-{
+ {
// return time delay for CFD channel
//
if (!fCalibentry)
return fTimeDelayCFD;
}
- return fgCalibData->GetTimeDelayCFD(ipmt);
-}
-
-//__________________________________________________________________
-Int_t
-AliT0Parameters::GetMeanT0()
-{
- // return mean of T0 distrubution with vertex=0
- //
- if (!fCalibentry)
- {
- return fMeanT0;
- }
-
- return fgCalibData->GetMeanT0();
+ return fgCalibData->GetTimeEq(ipmt);
}
//__________________________________________________________________
AliT0Parameters::GetChannel(Int_t trm, Int_t tdc, Int_t chain, Int_t channel)
{
- AliT0LookUpKey * val; //= new AliT0LookUpKey();
- AliT0LookUpValue * key= new AliT0LookUpValue(trm,tdc,chain,channel);
- if (fgLookUp)
- val = (AliT0LookUpKey*) fgLookUp->GetMapLookup()->GetValue((TObject*)key);
- else
- cout<<" !!!!!!!!! no look up table !!!"<<endl;
- if (!val ) {
- AliInfo(Form("No such address (%d %d %d %d)!",trm,tdc,chain,channel));
+ if (fgLookUp) {
+ AliT0LookUpValue key(trm,tdc,chain,channel);
+ AliT0LookUpKey *val = (AliT0LookUpKey*) fgLookUp->GetMapLookup()->GetValue((TObject*)&key);
+ // AliT0LookUpKey *val = (AliT0LookUpKey*) fLookUp.GetValue((TObject*)&key);
+ if (val )
+ return val->GetKey();
+ else {
+ AliWarning(Form("No such address (%d %d %d %d)!",trm,tdc,chain,channel));
+ return -1;
+ }
+ }
+ else {
+ AliError("No look up table has been loader!");
return -1;
}
-
- return val->GetKey();
-
}
//__________________________________________________________________
// Get the global z coordinate of the given T0 alignable volume
//
Double_t *tr;
-
- cout<<symname<<endl;
TGeoPNEntry *pne = gGeoManager->GetAlignableEntry(symname);
if (!pne) return 0;