#include <TMath.h>
#include <TSystem.h>
#include <Riostream.h>
+#include <TGeoManager.h>
+#include <TGeoPhysicalNode.h>
AliT0CalibData* AliT0Parameters::fgCalibData = 0;
AliT0CalibData* AliT0Parameters::fgLookUp = 0;
//____________________________________________________________________
AliT0Parameters::AliT0Parameters()
- :fIsInit(kFALSE),fPh2Mip(0),fmV2Mip(0),fChannelWidth(0),fmV2Channel(0),fQTmin(0),fQTmax(0),fSlewingLED(),fSlewingRec(),fPMTeff(),fTimeDelayLED(0),fTimeDelayCFD(0),fTimeDelayTVD(0),fCalibentry(), fLookUpentry(),fSlewCorr()
+ :fIsInit(kFALSE),
+ fPh2Mip(0),fmV2Mip(0),
+ fChannelWidth(0),fmV2Channel(0),
+ fQTmin(0),fQTmax(0),
+ fSlewingLED(),fSlewingRec(),
+ fPMTeff(),
+ fTimeDelayLED(0),fTimeDelayCFD(0),fTimeDelayTVD(0),
+ fCalibentry(), fLookUpentry(),fSlewCorr()
{
// Default constructor
}
SetTimeDelayTVD();
SetZposition();
+ SetNumberOfTRMs(2);
}
// CDB here.
// if (fIsInit) return;
- // AliCDBManager* cdb = AliCDBManager::Instance();
- // fCalibentry = cdb->Get("T0/Calib/Gain_TimeDelay_Slewing_Walk");
-
AliCDBStorage *stor =AliCDBManager::Instance()->GetStorage("local://$ALICE_ROOT");
//time equalizing
AliCDBEntry* fCalibentry = stor->Get("T0/Calib/TimeDelay",0);
- if (fCalibentry){
+ if (fCalibentry)
fgCalibData = (AliT0CalibData*)fCalibentry->GetObject();
- }
- else
- { AliError(" ALARM !!!! No time delays in CDB "); }
+ else
+ AliError(" ALARM !!!! No time delays in CDB ");
//slewing correction
AliCDBEntry* fSlewCorr = stor->Get("T0/Calib/Slewing_Walk",0);
- if (fSlewCorr){
- fgSlewCorr = (AliT0CalibData*)fSlewCorr->GetObject();
+ if (fSlewCorr){
+ fgSlewCorr = (AliT0CalibData*)fSlewCorr->GetObject();
}
- // fLookUpentry = cdb->Get("T0/Calib/LookUp_Table");
fLookUpentry = stor->Get("T0/Calib/LookUp_Table",0);
if (fLookUpentry){
fgLookUp = (AliT0CalibData*)fLookUpentry->GetObject();
- // fgLookUp->Dump();
}
else {
- fgLookUp->ReadAsciiLookup("$ALICE_ROOT/T0/lookUpTable.txt");
+ const char * filename = gSystem->ExpandPathName("$ALICE_ROOT/T0/lookUpTable.txt");
+ ifstream inFile(filename);
+ fgLookUp->ReadAsciiLookup(filename);
}
fIsInit = kTRUE;
ifstream inFile(filename);
// if(!inFile) AliError(Form("Cannot open file %s !",filename));
- Int_t i=0, i1=0, i2=0;
+ Int_t i=0;
while(getline(inFile,buffer)){
inFile >> ps >> mv;
return fgCalibData -> GetWalkVal(ipmt, mv) ;
}
-//__________________________________________________________________
//__________________________________________________________________
void
}
+//__________________________________________________________________
+Int_t
+AliT0Parameters::GetNumberOfTRMs()
+{
+ // return number of trms
+ //
+ if (!fgLookUp) {
+ fNumberOfTRMs = 2;
+ return fNumberOfTRMs;
+ }
+ return fgLookUp ->GetNumberOfTRMs();
+}
+//________________________________________________________________________________
+Double_t AliT0Parameters::GetZPosition(const char* symname){
+// 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;
+
+
+ TGeoPhysicalNode *pnode = pne->GetPhysicalNode();
+ if(pnode){
+ TGeoHMatrix* hm = pnode->GetMatrix();
+ tr = hm->GetTranslation();
+ }else{
+ const char* path = pne->GetTitle();
+ if(!gGeoManager->cd(path)){
+ AliErrorClass(Form("Volume path %s not valid!",path));
+ return 0;
+ }
+ tr = gGeoManager->GetCurrentMatrix()->GetTranslation();
+ }
+ return tr[2];
+
+}
+