From: cvetan Date: Tue, 21 Jun 2011 12:35:01 +0000 (+0000) Subject: Correction to the trigger simulation in order to use the full offset at the level... X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=commitdiff_plain;h=269183034ec9015a8c673c63f06b7a4c89e2b65f Correction to the trigger simulation in order to use the full offset at the level of TDC. Related to bug#83091. --- diff --git a/VZERO/AliVZEROConst.h b/VZERO/AliVZEROConst.h index 7eb898c7ae6..e53a13b24c6 100644 --- a/VZERO/AliVZEROConst.h +++ b/VZERO/AliVZEROConst.h @@ -6,7 +6,6 @@ const Float_t kIntTimeRes = 0.39; // intrinsic time resolution of the scintillator const Float_t kV0CDelayCables = 8.1; // delay cables on the C side (in ns) const Float_t kV0Offset = -1338.6; // general V0 offset between the TDCs and the trigger -const Float_t kClockOffset = 62.0; // Sampling clock offset (in ns) const Int_t kNClocks = 21; // Number of ADC clocks that are read out const Float_t kChargePerADC = 0.6e-12; // Charge per ADC const Int_t kMinTDCWidth = 13; // minimum signal width measured by TDC diff --git a/VZERO/AliVZEROTriggerSimulator.cxx b/VZERO/AliVZEROTriggerSimulator.cxx index 9dc11c28816..78c377c6513 100644 --- a/VZERO/AliVZEROTriggerSimulator.cxx +++ b/VZERO/AliVZEROTriggerSimulator.cxx @@ -35,6 +35,7 @@ #include "AliVZEROdigit.h" #include "AliVZEROCalibData.h" #include "AliVZEROConst.h" +#include "AliCTPTimeParams.h" ClassImp(AliVZEROTriggerSimulator) @@ -44,6 +45,7 @@ TObject(),fTriggerData(NULL),fDigitsTree(digitsTree),fDigits(digits),fTriggerWor { // constructor fTriggerData = LoadTriggerData(); + LoadClockOffset(); for(int i=0;i<64;i++) { fBBFlags[i] = fBGFlags[i] = kFALSE; @@ -64,6 +66,7 @@ TObject(),fTriggerData(NULL),fDigitsTree(NULL),fDigits(NULL),fTriggerWord(0) { // Default constructor fTriggerData = LoadTriggerData(); + LoadClockOffset(); for(int i=0;i<64;i++) { fBBFlags[i] = fBGFlags[i] = kFALSE; @@ -125,11 +128,8 @@ AliVZEROTriggerData * AliVZEROTriggerSimulator::LoadTriggerData() const entry = man->Get("VZERO/Trigger/Data"); if(!entry){ - AliWarning("Load of calibration data from default storage failed!"); - AliWarning("Calibration data will be loaded from local storage ($ALICE_ROOT)"); - - man->SetDefaultStorage("local://$ALICE_ROOT/OCDB"); - entry = man->Get("VZERO/Trigger/Data",0); + AliFatal("Load of trigger calibration data from default storage failed!"); + return NULL; } // Retrieval of data in directory VZERO/Calib/Trigger: @@ -142,6 +142,46 @@ AliVZEROTriggerData * AliVZEROTriggerSimulator::LoadTriggerData() const return triggerData; } + +//_____________________________________________________________________________ +void AliVZEROTriggerSimulator::LoadClockOffset() +{ + // This method is used in order to + // retrieve the TDC clock offset including + // roll-over, trig count and CTP L0->L1 delay + + AliCDBEntry *entry0 = AliCDBManager::Instance()->Get("VZERO/Calib/Data"); + if (!entry0) { + AliFatal("V0 Calib object is not found in OCDB !"); + return; + } + AliVZEROCalibData *calibdata = (AliVZEROCalibData*) entry0->GetObject(); + + AliCDBEntry *entry = AliCDBManager::Instance()->Get("GRP/CTP/CTPtiming"); + if (!entry) { + AliFatal("CTP timing parameters are not found in OCDB !"); + return; + } + AliCTPTimeParams *ctpParams = (AliCTPTimeParams*)entry->GetObject(); + Float_t l1Delay = (Float_t)ctpParams->GetDelayL1L0()*25.0; + + AliCDBEntry *entry1 = AliCDBManager::Instance()->Get("GRP/CTP/TimeAlign"); + if (!entry1) { + AliFatal("CTP time-alignment is not found in OCDB !"); + return; + } + AliCTPTimeParams *ctpTimeAlign = (AliCTPTimeParams*)entry1->GetObject(); + l1Delay += ((Float_t)ctpTimeAlign->GetDelayL1L0()*25.0); + + for(Int_t board = 0; board < AliVZEROTriggerData::kNCIUBoards; ++board) { + fClockOffset[board] = (((Float_t)calibdata->GetRollOver(board)- + (Float_t)calibdata->GetTriggerCountOffset(board))*25.0- + l1Delay+ + kV0Offset); + AliDebug(1,Form("Board %d Offset %f",board,fClockOffset[board])); + } +} + //_____________________________________________________________________________ void AliVZEROTriggerSimulator::Run() { //AliInfo("Generating VZERO Triggers"); @@ -176,7 +216,7 @@ void AliVZEROTriggerSimulator::Run() { } Float_t time = digit->Time(); - time -= kClockOffset; + time -= fClockOffset[board]; AliDebug(10,Form(" Digit: %f %d %d %d %d %d %d %d %d",digit->Time(), digit->ChargeADC(8),digit->ChargeADC(9),digit->ChargeADC(10), diff --git a/VZERO/AliVZEROTriggerSimulator.h b/VZERO/AliVZEROTriggerSimulator.h index 722b2121a82..007c1caf0d6 100644 --- a/VZERO/AliVZEROTriggerSimulator.h +++ b/VZERO/AliVZEROTriggerSimulator.h @@ -70,6 +70,7 @@ private: AliVZEROTriggerSimulator(const AliVZEROTriggerSimulator &/*triggerSim*/); AliVZEROTriggerSimulator& operator= (const AliVZEROTriggerSimulator & /*triggerSim*/); AliVZEROTriggerData * LoadTriggerData() const ; + void LoadClockOffset(); void GenerateBBWindows(); void GenerateBGWindows(); @@ -83,6 +84,7 @@ private: AliVZEROLogicalSignal * fBGReset[AliVZEROTriggerData::kNCIUBoards]; // BG Reset Window AliVZEROTriggerData *fTriggerData; // Object holding the trigger configuration parameters + Float_t fClockOffset[AliVZEROTriggerData::kNCIUBoards]; // TDC clock offset including roll-over, trig count and L0->L1 delay TTree* fDigitsTree; //Pointer to VZERO digit tree TClonesArray* fDigits; //Pointer to VZERO digit array @@ -93,7 +95,7 @@ private: UShort_t fTriggerWord; // Word holding the 16 triggers return by the FEE - ClassDef( AliVZEROTriggerSimulator, 2 ) + ClassDef( AliVZEROTriggerSimulator, 3 ) };