Correction to the trigger simulation in order to use the full offset at the level...
authorcvetan <cvetan@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 21 Jun 2011 12:35:01 +0000 (12:35 +0000)
committercvetan <cvetan@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 21 Jun 2011 12:35:01 +0000 (12:35 +0000)
VZERO/AliVZEROConst.h
VZERO/AliVZEROTriggerSimulator.cxx
VZERO/AliVZEROTriggerSimulator.h

index 7eb898c..e53a13b 100644 (file)
@@ -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
index 9dc11c2..78c377c 100644 (file)
@@ -35,6 +35,7 @@
 #include "AliVZEROdigit.h"\r
 #include "AliVZEROCalibData.h"\r
 #include "AliVZEROConst.h"\r
+#include "AliCTPTimeParams.h"\r
 \r
 ClassImp(AliVZEROTriggerSimulator)\r
 \r
@@ -44,6 +45,7 @@ TObject(),fTriggerData(NULL),fDigitsTree(digitsTree),fDigits(digits),fTriggerWor
 {\r
        // constructor\r
        fTriggerData = LoadTriggerData();\r
+       LoadClockOffset();\r
        \r
        for(int i=0;i<64;i++) {\r
                fBBFlags[i] = fBGFlags[i] = kFALSE;\r
@@ -64,6 +66,7 @@ TObject(),fTriggerData(NULL),fDigitsTree(NULL),fDigits(NULL),fTriggerWord(0)
 {\r
        // Default constructor\r
        fTriggerData = LoadTriggerData();\r
+       LoadClockOffset();\r
 \r
        for(int i=0;i<64;i++) {\r
                fBBFlags[i] = fBGFlags[i] = kFALSE;\r
@@ -125,11 +128,8 @@ AliVZEROTriggerData * AliVZEROTriggerSimulator::LoadTriggerData() const
        \r
        entry = man->Get("VZERO/Trigger/Data");\r
        if(!entry){\r
-               AliWarning("Load of calibration data from default storage failed!");\r
-               AliWarning("Calibration data will be loaded from local storage ($ALICE_ROOT)");\r
-               \r
-               man->SetDefaultStorage("local://$ALICE_ROOT/OCDB");\r
-               entry = man->Get("VZERO/Trigger/Data",0);\r
+               AliFatal("Load of trigger calibration data from default storage failed!");\r
+               return NULL;\r
        }\r
        \r
        // Retrieval of data in directory VZERO/Calib/Trigger:\r
@@ -142,6 +142,46 @@ AliVZEROTriggerData * AliVZEROTriggerSimulator::LoadTriggerData() const
        return triggerData;\r
 }\r
 \r
+\r
+//_____________________________________________________________________________\r
+void AliVZEROTriggerSimulator::LoadClockOffset()\r
+{\r
+  // This method is used in order to\r
+  // retrieve the TDC clock offset including\r
+  // roll-over, trig count and CTP L0->L1 delay\r
+\r
+  AliCDBEntry *entry0 = AliCDBManager::Instance()->Get("VZERO/Calib/Data");\r
+  if (!entry0) {\r
+    AliFatal("V0 Calib object is not found in OCDB !");\r
+    return;\r
+  }\r
+  AliVZEROCalibData *calibdata = (AliVZEROCalibData*) entry0->GetObject();\r
+\r
+  AliCDBEntry *entry = AliCDBManager::Instance()->Get("GRP/CTP/CTPtiming");\r
+  if (!entry) {\r
+    AliFatal("CTP timing parameters are not found in OCDB !");\r
+    return;\r
+  }\r
+  AliCTPTimeParams *ctpParams = (AliCTPTimeParams*)entry->GetObject();\r
+  Float_t l1Delay = (Float_t)ctpParams->GetDelayL1L0()*25.0;\r
+\r
+  AliCDBEntry *entry1 = AliCDBManager::Instance()->Get("GRP/CTP/TimeAlign");\r
+  if (!entry1) {\r
+    AliFatal("CTP time-alignment is not found in OCDB !");\r
+    return;\r
+  }\r
+  AliCTPTimeParams *ctpTimeAlign = (AliCTPTimeParams*)entry1->GetObject();\r
+  l1Delay += ((Float_t)ctpTimeAlign->GetDelayL1L0()*25.0);\r
+\r
+  for(Int_t board = 0; board < AliVZEROTriggerData::kNCIUBoards; ++board) {\r
+    fClockOffset[board] = (((Float_t)calibdata->GetRollOver(board)-\r
+                           (Float_t)calibdata->GetTriggerCountOffset(board))*25.0-\r
+                          l1Delay+\r
+                          kV0Offset);\r
+    AliDebug(1,Form("Board %d Offset %f",board,fClockOffset[board]));\r
+  }\r
+}\r
+\r
 //_____________________________________________________________________________\r
 void AliVZEROTriggerSimulator::Run() {\r
        //AliInfo("Generating VZERO Triggers");\r
@@ -176,7 +216,7 @@ void AliVZEROTriggerSimulator::Run() {
                        }\r
                        \r
                        Float_t time = digit->Time();\r
-                       time -= kClockOffset;\r
+                       time -= fClockOffset[board];\r
 \r
                        AliDebug(10,Form(" Digit: %f %d %d %d %d %d %d %d %d",digit->Time(),\r
                                         digit->ChargeADC(8),digit->ChargeADC(9),digit->ChargeADC(10),\r
index 722b212..007c1ca 100644 (file)
@@ -70,6 +70,7 @@ private:
        AliVZEROTriggerSimulator(const AliVZEROTriggerSimulator &/*triggerSim*/);\r
        AliVZEROTriggerSimulator& operator= (const AliVZEROTriggerSimulator & /*triggerSim*/);\r
        AliVZEROTriggerData * LoadTriggerData() const ;\r
+       void                  LoadClockOffset();\r
        void GenerateBBWindows();\r
        void GenerateBGWindows();\r
        \r
@@ -83,6 +84,7 @@ private:
        AliVZEROLogicalSignal * fBGReset[AliVZEROTriggerData::kNCIUBoards]; // BG Reset Window\r
 \r
        AliVZEROTriggerData *fTriggerData; // Object holding the trigger configuration parameters\r
+       Float_t fClockOffset[AliVZEROTriggerData::kNCIUBoards]; // TDC clock offset including roll-over, trig count and L0->L1 delay\r
        \r
        TTree* fDigitsTree; //Pointer to VZERO digit tree\r
        TClonesArray* fDigits; //Pointer to VZERO digit array\r
@@ -93,7 +95,7 @@ private:
        \r
        UShort_t fTriggerWord; // Word holding the 16 triggers return by the FEE\r
                \r
-       ClassDef( AliVZEROTriggerSimulator, 2 )  \r
+       ClassDef( AliVZEROTriggerSimulator, 3 )  \r
 \r
 };\r
 \r