diff --git a/macro/beamtime/mcbm2020/unpack_tsa_mcbm.C b/macro/beamtime/mcbm2020/unpack_tsa_mcbm.C index 5e51d3b807482b00afe94e4d936410d7b85cd83c..64f7c63e929839e9b2c3a10eee816e8c1a718388 100644 --- a/macro/beamtime/mcbm2020/unpack_tsa_mcbm.C +++ b/macro/beamtime/mcbm2020/unpack_tsa_mcbm.C @@ -137,11 +137,11 @@ void unpack_tsa_mcbm(TString inFile = "", unpacker_sts ->MaskNoisyChannel(1,768 , true ); unpacker_sts ->MaskNoisyChannel(1,894 , true ); unpacker_sts ->MaskNoisyChannel(1,896 , true ); - + unpacker_sts ->MaskNoisyChannel(2,930 , true ); unpacker_sts ->MaskNoisyChannel(2,926 , true ); unpacker_sts ->MaskNoisyChannel(2,892 , true ); - + unpacker_sts ->MaskNoisyChannel(3,770 , true ); unpacker_tof->SetSeparateArrayT0(); @@ -172,7 +172,7 @@ void unpack_tsa_mcbm(TString inFile = "", unpacker_sts ->SetTimeOffsetNsAsic( 5, 0.0 ); // Unused unpacker_sts ->SetTimeOffsetNsAsic( 6, 0.0 ); // Unused unpacker_sts ->SetTimeOffsetNsAsic( 7, 0.0 ); // Unused - // + // unpacker_sts ->SetTimeOffsetNsAsic(8, -0.360078 ); unpacker_sts ->SetTimeOffsetNsAsic(9, 2.73976 ); unpacker_sts ->SetTimeOffsetNsAsic(10, -0.507079 ); @@ -181,7 +181,7 @@ void unpack_tsa_mcbm(TString inFile = "", unpacker_sts ->SetTimeOffsetNsAsic(13, -0.255514 ); unpacker_sts ->SetTimeOffsetNsAsic(14, 1.44034 ); unpacker_sts ->SetTimeOffsetNsAsic(15, 2.64009 ); - // this side: revert order 23->16 + // this side: revert order 23->16 unpacker_sts ->SetTimeOffsetNsAsic(23, -0.442762 ); unpacker_sts ->SetTimeOffsetNsAsic(22, 1.76543 ); unpacker_sts ->SetTimeOffsetNsAsic(21, -0.94728 ); @@ -199,7 +199,7 @@ void unpack_tsa_mcbm(TString inFile = "", unpacker_sts ->SetTimeOffsetNsAsic(29, -0.32990 ); unpacker_sts ->SetTimeOffsetNsAsic(30, 1.43535 ); unpacker_sts ->SetTimeOffsetNsAsic(31, -0.155741 ); - // this side: revert order 39->32 + // this side: revert order 39->32 unpacker_sts ->SetTimeOffsetNsAsic(39, 1.53865 ); unpacker_sts ->SetTimeOffsetNsAsic(38, 3.6318 ); unpacker_sts ->SetTimeOffsetNsAsic(37, 1.3153 ); @@ -529,27 +529,34 @@ void unpack_tsa_mcbm(TString inFile = "", case 831: { // unpacker_trdR->SetTimeOffsetNs( 70.00 ); unpacker_trdR->SetTimeOffsetNs(-25.00); - std::cout<<"MUCH: Feb by feb time offset correction......"<<std::endl; - UInt_t uRun,uNx; + + std::cout << "MUCH: Feb by feb time offset correction......" << std::endl; + UInt_t uRun, uNx; Double_t offset; - ifstream infile("../mcbm2020/Parameters/time_offset_much.txt"); - if (!infile) std::cout << "can not open time offset MUCH parameter List" << std::endl; - while (!infile.eof()) { - infile>>uRun>>uNx>>offset; - if(uRun !=831)continue; - unpacker_much->SetTimeOffsetNsAsic(uNx,offset); - } - infile.close(); - std::cout<<"masking noisy channels......"<<std::endl; + ifstream infile_off("../mcbm2020/parameters/time_offset_much.txt"); + if (!infile_off) { + std::cout << "can not open time offset MUCH parameter List" << std::endl; + return kFALSE; + } // if (!infile_off) + while (!infile_off.eof()) { + infile_off >> uRun >> uNx >> offset; + if(uRun != 831) continue; + unpacker_much->SetTimeOffsetNsAsic(uNx, offset); + } // while (!infile_off.eof()) + infile_off.close(); + std::cout << "masking noisy channels......" << std::endl; UInt_t uChan = 0; - ifstream infile("../mcbm2020/Parameters/much_noisy_channel_list.txt"); - if (!infile) std::cout << "can not open MUCH noisy channel List" << std::endl; - while (!infile.eof()) { - infile>>uRun>>uNx>>uChan; - if(uRun!=831)continue; - unpacker_much->MaskNoisyChannel(uNx,uChan,kTRUE ); - } - infile.close(); + ifstream infile_noise("../mcbm2020/parameters/much_noisy_channel_list.txt"); + if (!infile_noise) { + std::cout << "can not open MUCH noisy channel List" << std::endl; + return kFALSE; + } // if (!infile_noise) + while (!infile_noise.eof()) { + infile_noise >> uRun >> uNx >> uChan; + if(uRun != 831) continue; + unpacker_much->MaskNoisyChannel(uNx, uChan, kTRUE ); + } // while (!infile_noise.eof()) + infile_noise.close(); break; } // 831 case 836: { diff --git a/macro/beamtime/mcbm2020/unpack_tsa_mcbm_kronos.C b/macro/beamtime/mcbm2020/unpack_tsa_mcbm_kronos.C index f133f1636c2183a58a84f450875bc352dc096932..826f207d49e0a950ec194414bfce8fa3f7ba7384 100644 --- a/macro/beamtime/mcbm2020/unpack_tsa_mcbm_kronos.C +++ b/macro/beamtime/mcbm2020/unpack_tsa_mcbm_kronos.C @@ -34,7 +34,10 @@ void unpack_tsa_mcbm_kronos(UInt_t uRunIdx = 99999, 860, 861, 862, 863, 864, 865, 866 // 7 => 49 - 55 */ }; - if (vuListRunId.size() <= uRunIdx) return kFALSE; + if (vuListRunId.size() <= uRunIdx) { + std::cout << "Run index is out of range, not doing anything" << std::endl; + return kFALSE; + } uRunId = vuListRunId[uRunIdx]; } // if( 99999 != uRunIdx ) @@ -162,13 +165,13 @@ void unpack_tsa_mcbm_kronos(UInt_t uRunIdx = 99999, unpacker_sts ->MaskNoisyChannel(1,768 , true ); unpacker_sts ->MaskNoisyChannel(1,894 , true ); unpacker_sts ->MaskNoisyChannel(1,896 , true ); - + unpacker_sts ->MaskNoisyChannel(2,930 , true ); unpacker_sts ->MaskNoisyChannel(2,926 , true ); unpacker_sts ->MaskNoisyChannel(2,892 , true ); - + unpacker_sts ->MaskNoisyChannel(3,770 , true ); - + unpacker_tof->SetSeparateArrayT0(); // ------------------------------ // @@ -197,7 +200,7 @@ void unpack_tsa_mcbm_kronos(UInt_t uRunIdx = 99999, unpacker_sts ->SetTimeOffsetNsAsic( 5, 0.0 ); // Unused unpacker_sts ->SetTimeOffsetNsAsic( 6, 0.0 ); // Unused unpacker_sts ->SetTimeOffsetNsAsic( 7, 0.0 ); // Unused - // + // unpacker_sts ->SetTimeOffsetNsAsic(8, -0.360078 ); unpacker_sts ->SetTimeOffsetNsAsic(9, 2.73976 ); unpacker_sts ->SetTimeOffsetNsAsic(10, -0.507079 ); @@ -206,7 +209,7 @@ void unpack_tsa_mcbm_kronos(UInt_t uRunIdx = 99999, unpacker_sts ->SetTimeOffsetNsAsic(13, -0.255514 ); unpacker_sts ->SetTimeOffsetNsAsic(14, 1.44034 ); unpacker_sts ->SetTimeOffsetNsAsic(15, 2.64009 ); - // this side: revert order 23->16 + // this side: revert order 23->16 unpacker_sts ->SetTimeOffsetNsAsic(23, -0.442762 ); unpacker_sts ->SetTimeOffsetNsAsic(22, 1.76543 ); unpacker_sts ->SetTimeOffsetNsAsic(21, -0.94728 ); @@ -224,7 +227,7 @@ void unpack_tsa_mcbm_kronos(UInt_t uRunIdx = 99999, unpacker_sts ->SetTimeOffsetNsAsic(29, -0.32990 ); unpacker_sts ->SetTimeOffsetNsAsic(30, 1.43535 ); unpacker_sts ->SetTimeOffsetNsAsic(31, -0.155741 ); - // this side: revert order 39->32 + // this side: revert order 39->32 unpacker_sts ->SetTimeOffsetNsAsic(39, 1.53865 ); unpacker_sts ->SetTimeOffsetNsAsic(38, 3.6318 ); unpacker_sts ->SetTimeOffsetNsAsic(37, 1.3153 ); @@ -554,27 +557,34 @@ void unpack_tsa_mcbm_kronos(UInt_t uRunIdx = 99999, case 831: { // unpacker_trdR->SetTimeOffsetNs( 70.00 ); unpacker_trdR->SetTimeOffsetNs(-25.00); - std::cout<<"MUCH: Feb by feb time offset correction......"<<std::endl; - UInt_t uRun,uNx; + + std::cout << "MUCH: Feb by feb time offset correction......" << std::endl; + UInt_t uRun, uNx; Double_t offset; - ifstream infile("../mcbm2020/Parameters/time_offset_much.txt"); - if (!infile) std::cout << "can not open time offset MUCH parameter List" << std::endl; - while (!infile.eof()) { - infile>>uRun>>uNx>>offset; - if(uRun !=831)continue; - unpacker_much->SetTimeOffsetNsAsic(uNx,offset); - } - infile.close(); - std::cout<<"masking noisy channels......"<<std::endl; + ifstream infile_off("../mcbm2020/parameters/time_offset_much.txt"); + if (!infile_off) { + std::cout << "can not open time offset MUCH parameter List" << std::endl; + return kFALSE; + } // if (!infile_off) + while (!infile_off.eof()) { + infile_off >> uRun >> uNx >> offset; + if(uRun != 831) continue; + unpacker_much->SetTimeOffsetNsAsic(uNx, offset); + } // while (!infile_off.eof()) + infile_off.close(); + std::cout << "masking noisy channels......" << std::endl; UInt_t uChan = 0; - ifstream infile("../mcbm2020/Parameters/much_noisy_channel_list.txt"); - if (!infile) std::cout << "can not open MUCH noisy channel List" << std::endl; - while (!infile.eof()) { - infile>>uRun>>uNx>>uChan; - if(uRun!=831)continue; - unpacker_much->MaskNoisyChannel(uNx,uChan,kTRUE ); - } - infile.close(); + ifstream infile_noise("../mcbm2020/parameters/much_noisy_channel_list.txt"); + if (!infile_noise) { + std::cout << "can not open MUCH noisy channel List" << std::endl; + return kFALSE; + } // if (!infile_noise) + while (!infile_noise.eof()) { + infile_noise >> uRun >> uNx >> uChan; + if(uRun != 831) continue; + unpacker_much->MaskNoisyChannel(uNx, uChan, kTRUE ); + } // while (!infile_noise.eof()) + infile_noise.close(); break; } // 831 case 836: { diff --git a/macro/beamtime/mcbm2020/unpack_tsa_mcbm_mfles.C b/macro/beamtime/mcbm2020/unpack_tsa_mcbm_mfles.C index d65132444ef927644ba7abb042d4763dcf8e4780..538bee472714cd5e19e958449f150f908ca60d23 100644 --- a/macro/beamtime/mcbm2020/unpack_tsa_mcbm_mfles.C +++ b/macro/beamtime/mcbm2020/unpack_tsa_mcbm_mfles.C @@ -72,6 +72,11 @@ void unpack_tsa_mcbm_mfles(UInt_t uRunId = 0, } TString paramFileTof = paramDir + "mTofPar.par"; + if (uRunId >= 708 && uRunId < 754) + paramFileTof = paramDir + "mTofPar_2Stack.par"; + else if (uRunId >= 754) + paramFileTof = paramDir + "mTofPar_3Stack.par"; + TObjString* parTofFileName = new TObjString(paramFileTof); parFileList->Add(parTofFileName); @@ -105,12 +110,15 @@ void unpack_tsa_mcbm_mfles(UInt_t uRunId = 0, new CbmMcbm2018UnpackerTaskRich(); CbmMcbm2018UnpackerTaskPsd* unpacker_psd = new CbmMcbm2018UnpackerTaskPsd(); + /* + * Do not generate plots by default unpacker_sts->SetMonitorMode(); unpacker_much->SetMonitorMode(); - unpacker_trdR->SetMonitorMode(); + unpacker_trdR->SetMonitorMode(); // Assume histo server present, not like other unpackers unpacker_tof->SetMonitorMode(); unpacker_rich->SetMonitorMode(); unpacker_psd->SetMonitorMode(); +*/ unpacker_sts->SetIgnoreOverlapMs(); unpacker_much->SetIgnoreOverlapMs(); @@ -119,23 +127,44 @@ void unpack_tsa_mcbm_mfles(UInt_t uRunId = 0, unpacker_rich->SetIgnoreOverlapMs(); unpacker_psd->SetIgnoreOverlapMs(); + /// Starting from first run on Tuesday 28/04/2020, STS uses bin sorter FW + if (692 <= uRunId) unpacker_sts->SetBinningFwFlag(kTRUE); + /// Starting from first run on Monday 04/05/2020, MUCH uses bin sorter FW + if (811 <= uRunId) unpacker_much->SetBinningFwFlag(kTRUE); + + /// FIXME: Disable clang formatting for parameters tuning for now + /* clang-format off */ // unpacker_sts ->SetAdcCut( 3 ); + unpacker_sts ->MaskNoisyChannel(1,768 , true ); + unpacker_sts ->MaskNoisyChannel(1,894 , true ); + unpacker_sts ->MaskNoisyChannel(1,896 , true ); + + unpacker_sts ->MaskNoisyChannel(2,930 , true ); + unpacker_sts ->MaskNoisyChannel(2,926 , true ); + unpacker_sts ->MaskNoisyChannel(2,892 , true ); + + unpacker_sts ->MaskNoisyChannel(3,770 , true ); + unpacker_tof->SetSeparateArrayT0(); - switch (uRunId) { - case 368: - unpacker_sts->SetTimeOffsetNs(2519880); // Run 368 - break; - /* - case 159: - { + // ------------------------------ // + // Enable Asic type for MUCH data. + // fFlag = 0 ==> Asic type 2.0 (20) ---> December 2018 and March 2019 Data + // fFlag = 1 ==> Asic type 2.1 (21) ---> December 2019 Data + // This is to correct the channel fliping problem in smx 2.1 chip + Int_t fFlag = 1; + unpacker_much->EnableAsicType(fFlag); + // ------------------------------ // /// General System offsets (= offsets between sub-systems) - unpacker_sts ->SetTimeOffsetNs( -1750 ); // Run 159 - unpacker_much->SetTimeOffsetNs( -1750 ); // Run 159 - unpacker_tof ->SetTimeOffsetNs( -50 ); // Run 159 - unpacker_rich->SetTimeOffsetNs( -1090 ); // Run 159 - - /// ASIC specific offsets (= offsets inside sub-system) + unpacker_sts->SetTimeOffsetNs(-936); // Run 811-866 + unpacker_much->SetTimeOffsetNs(-885); // Run 811-866 + unpacker_trdR->SetTimeOffsetNs(0); // Run 811-866 + unpacker_tof->SetTimeOffsetNs(25); // Run 811-866 + unpacker_rich->SetTimeOffsetNs(-310); // Run 811-866 + unpacker_psd->SetTimeOffsetNs(-225); // Run 811-866 + + // ----------- ASIC by ASIC STS ---------------- + // the first 8 Unused unpacker_sts ->SetTimeOffsetNsAsic( 0, 0.0 ); // Unused unpacker_sts ->SetTimeOffsetNsAsic( 1, 0.0 ); // Unused unpacker_sts ->SetTimeOffsetNsAsic( 2, 0.0 ); // Unused @@ -144,72 +173,404 @@ void unpack_tsa_mcbm_mfles(UInt_t uRunId = 0, unpacker_sts ->SetTimeOffsetNsAsic( 5, 0.0 ); // Unused unpacker_sts ->SetTimeOffsetNsAsic( 6, 0.0 ); // Unused unpacker_sts ->SetTimeOffsetNsAsic( 7, 0.0 ); // Unused - unpacker_sts ->SetTimeOffsetNsAsic( 8, 0.0 ); // Run 160, Ladder 0, Module 1, N, Asic 0 - unpacker_sts ->SetTimeOffsetNsAsic( 9, 18.75 ); // Run 160, Ladder 0, Module 1, N, Asic 1 - unpacker_sts ->SetTimeOffsetNsAsic( 10, 0.0 ); // Run 160, Ladder 0, Module 1, N, Asic 2 - unpacker_sts ->SetTimeOffsetNsAsic( 11, 25.0 ); // Run 160, Ladder 0, Module 1, N, Asic 3 - unpacker_sts ->SetTimeOffsetNsAsic( 12, 0.0 ); // Run 160, Ladder 0, Module 1, N, Asic 4 - unpacker_sts ->SetTimeOffsetNsAsic( 13, 56.25 ); // Run 160, Ladder 0, Module 1, N, Asic 5 - unpacker_sts ->SetTimeOffsetNsAsic( 14, 0.0 ); // Run 160, Ladder 0, Module 1, N, Asic 6 - unpacker_sts ->SetTimeOffsetNsAsic( 15, 37.5 ); // Run 160, Ladder 0, Module 1, N, Asic 7 - unpacker_sts ->SetTimeOffsetNsAsic( 16, 0.0 ); // Run 160, Ladder 0, Module 1, P, Asic 0 - unpacker_sts ->SetTimeOffsetNsAsic( 17, 0.0 ); // Run 160, Ladder 0, Module 1, P, Asic 1 - unpacker_sts ->SetTimeOffsetNsAsic( 18, 0.0 ); // Run 160, Ladder 0, Module 1, P, Asic 2 - unpacker_sts ->SetTimeOffsetNsAsic( 19, 50.0 ); // Run 160, Ladder 0, Module 1, P, Asic 3 - unpacker_sts ->SetTimeOffsetNsAsic( 20, 0.0 ); // Run 160, Ladder 0, Module 1, P, Asic 4 - unpacker_sts ->SetTimeOffsetNsAsic( 21, 0.0 ); // Run 160, Ladder 0, Module 1, P, Asic 5 - unpacker_sts ->SetTimeOffsetNsAsic( 22, 0.0 ); // Run 160, Ladder 0, Module 1, P, Asic 6 - unpacker_sts ->SetTimeOffsetNsAsic( 23, 25.0 ); // Run 160, Ladder 0, Module 1, P, Asic 7 - unpacker_sts ->SetTimeOffsetNsAsic( 24, 50.0 ); // Run 160, Ladder 0, Module 0, N, Asic 0 - unpacker_sts ->SetTimeOffsetNsAsic( 25, 25.0 ); // Run 160, Ladder 0, Module 0, N, Asic 1 - unpacker_sts ->SetTimeOffsetNsAsic( 26, 50.0 ); // Run 160, Ladder 0, Module 0, N, Asic 2 - unpacker_sts ->SetTimeOffsetNsAsic( 27, 31.25 ); // Run 160, Ladder 0, Module 0, N, Asic 3 - unpacker_sts ->SetTimeOffsetNsAsic( 28, 0.0 ); // Run 160, Ladder 0, Module 0, N, Asic 4 - unpacker_sts ->SetTimeOffsetNsAsic( 29, 6.25 ); // Run 160, Ladder 0, Module 0, N, Asic 5 - unpacker_sts ->SetTimeOffsetNsAsic( 30, 50.0 ); // Run 160, Ladder 0, Module 0, N, Asic 6 - unpacker_sts ->SetTimeOffsetNsAsic( 31, 31.25 ); // Run 160, Ladder 0, Module 0, N, Asic 7 - unpacker_sts ->SetTimeOffsetNsAsic( 32, 0.0 ); // Run 160, Ladder 0, Module 0, P, Asic 0 - unpacker_sts ->SetTimeOffsetNsAsic( 33, 31.25 ); // Run 160, Ladder 0, Module 0, P, Asic 1 - unpacker_sts ->SetTimeOffsetNsAsic( 34, 0.0 ); // Run 160, Ladder 0, Module 0, P, Asic 2 - unpacker_sts ->SetTimeOffsetNsAsic( 35, 25.0 ); // Run 160, Ladder 0, Module 0, P, Asic 3 - unpacker_sts ->SetTimeOffsetNsAsic( 36, 25.0 ); // Run 160, Ladder 0, Module 0, P, Asic 4 - unpacker_sts ->SetTimeOffsetNsAsic( 37, 25.0 ); // Run 160, Ladder 0, Module 0, P, Asic 5 - unpacker_sts ->SetTimeOffsetNsAsic( 38, 0.0 ); // Run 160, Ladder 0, Module 0, P, Asic 6 - unpacker_sts ->SetTimeOffsetNsAsic( 39, 0.0 ); // Run 160, Ladder 0, Module 0, P, Asic 7 - - unpacker_much->SetTimeOffsetNsAsic( 0, 0.0 ); // Run 159, DPB 0 ASIC 0 - unpacker_much->SetTimeOffsetNsAsic( 1, 109.0 ); // Run 159, DPB 0 ASIC 1 - unpacker_much->SetTimeOffsetNsAsic( 2, 142.0 ); // Run 159, DPB 0 ASIC 2 - unpacker_much->SetTimeOffsetNsAsic( 3, 84.0 ); // Run 159, DPB 0 ASIC 3 - unpacker_much->SetTimeOffsetNsAsic( 4, 109.0 ); // Run 159, DPB 0 ASIC 4 - unpacker_much->SetTimeOffsetNsAsic( 5, 0.0 ); // Run 159, DPB 0 ASIC 5 - unpacker_much->SetTimeOffsetNsAsic( 6, 2820915.0 ); // Run 159, DPB 1 ASIC 0 - unpacker_much->SetTimeOffsetNsAsic( 7, 2820905.0 ); // Run 159, DPB 1 ASIC 1 - unpacker_much->SetTimeOffsetNsAsic( 8, 2820785.0 ); // Run 159, DPB 1 ASIC 2 - unpacker_much->SetTimeOffsetNsAsic( 9, 2820915.0 ); // Run 159, DPB 1 ASIC 3 - unpacker_much->SetTimeOffsetNsAsic( 10, 0.0 ); // Run 159, DPB 1 ASIC 4 - unpacker_much->SetTimeOffsetNsAsic( 11, 2820805.0 ); // Run 159, DPB 1 ASIC 5 - unpacker_much->SetTimeOffsetNsAsic( 12, 8144.0 ); // Run 159, DPB 2 ASIC 0 - unpacker_much->SetTimeOffsetNsAsic( 13, 8133.0 ); // Run 159, DPB 2 ASIC 1 - unpacker_much->SetTimeOffsetNsAsic( 14, 0.0 ); // Run 159, DPB 2 ASIC 2 - unpacker_much->SetTimeOffsetNsAsic( 15, 0.0 ); // Run 159, DPB 2 ASIC 3 - unpacker_much->SetTimeOffsetNsAsic( 16, 0.0 ); // Run 159, DPB 2 ASIC 4 - unpacker_much->SetTimeOffsetNsAsic( 17, 0.0 ); // Run 159, DPB 2 ASIC 5 - unpacker_much->SetTimeOffsetNsAsic( 18, 136.0 ); // Run 159, DPB 3 ASIC 0 - unpacker_much->SetTimeOffsetNsAsic( 19, 119.0 ); // Run 159, DPB 3 ASIC 1 - unpacker_much->SetTimeOffsetNsAsic( 20, 141.0 ); // Run 159, DPB 3 ASIC 2 - unpacker_much->SetTimeOffsetNsAsic( 21, 0.0 ); // Run 159, DPB 3 ASIC 3 - unpacker_much->SetTimeOffsetNsAsic( 22, 0.0 ); // Run 159, DPB 3 ASIC 4 - unpacker_much->SetTimeOffsetNsAsic( 23, 0.0 ); // Run 159, DPB 3 ASIC 5 + // + unpacker_sts ->SetTimeOffsetNsAsic(8, -0.360078 ); + unpacker_sts ->SetTimeOffsetNsAsic(9, 2.73976 ); + unpacker_sts ->SetTimeOffsetNsAsic(10, -0.507079 ); + unpacker_sts ->SetTimeOffsetNsAsic(11, 1.74695 ); + unpacker_sts ->SetTimeOffsetNsAsic(12, -0.909864 ); + unpacker_sts ->SetTimeOffsetNsAsic(13, -0.255514 ); + unpacker_sts ->SetTimeOffsetNsAsic(14, 1.44034 ); + unpacker_sts ->SetTimeOffsetNsAsic(15, 2.64009 ); + // this side: revert order 23->16 + unpacker_sts ->SetTimeOffsetNsAsic(23, -0.442762 ); + unpacker_sts ->SetTimeOffsetNsAsic(22, 1.76543 ); + unpacker_sts ->SetTimeOffsetNsAsic(21, -0.94728 ); + unpacker_sts ->SetTimeOffsetNsAsic(20, -2.18516 ); + unpacker_sts ->SetTimeOffsetNsAsic(19, -0.68254 ); + unpacker_sts ->SetTimeOffsetNsAsic(18, -2.32241 ); + unpacker_sts ->SetTimeOffsetNsAsic(17, -1.53483 ); + unpacker_sts ->SetTimeOffsetNsAsic(16, -2.12455 ); + // + unpacker_sts ->SetTimeOffsetNsAsic(24, -0.41084 ); + unpacker_sts ->SetTimeOffsetNsAsic(25, 0.230455 ); + unpacker_sts ->SetTimeOffsetNsAsic(26, -0.206921 ); + unpacker_sts ->SetTimeOffsetNsAsic(27, 0.0913657 ); + unpacker_sts ->SetTimeOffsetNsAsic(28, -0.17252 ); + unpacker_sts ->SetTimeOffsetNsAsic(29, -0.32990 ); + unpacker_sts ->SetTimeOffsetNsAsic(30, 1.43535 ); + unpacker_sts ->SetTimeOffsetNsAsic(31, -0.155741 ); + // this side: revert order 39->32 + unpacker_sts ->SetTimeOffsetNsAsic(39, 1.53865 ); + unpacker_sts ->SetTimeOffsetNsAsic(38, 3.6318 ); + unpacker_sts ->SetTimeOffsetNsAsic(37, 1.3153 ); + unpacker_sts ->SetTimeOffsetNsAsic(36, -1.90278 ); + unpacker_sts ->SetTimeOffsetNsAsic(35, 2.00051 ); + unpacker_sts ->SetTimeOffsetNsAsic(34, -2.85656 ); + unpacker_sts ->SetTimeOffsetNsAsic(33, 1.28834 ); + unpacker_sts ->SetTimeOffsetNsAsic(32, 0.657113 ); + switch (uRunId) { + case 707: { + /// General System offsets (= offsets between sub-systems) + //unpacker_sts ->SetTimeOffsetNs( -1750 ); // Run 707 + //unpacker_much->SetTimeOffsetNs( -1750 ); // Run 707 + + /// ASIC specific offsets (= offsets inside sub-system) + unpacker_much->SetTimeOffsetNsAsic(0, 0.0); // Run 707, DPB 0 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(1, 0.0); // Run 707, DPB 0 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(2, 0.0); // Run 707, DPB 0 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(3, 0.0); // Run 707, DPB 0 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(4, 0.0); // Run 707, DPB 0 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(5, 0.0); // Run 707, DPB 0 ASIC 5 + unpacker_much->SetTimeOffsetNsAsic(6, 0.0); // Run 707, DPB 1 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(7, 0.0); // Run 707, DPB 1 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(8, 0.0); // Run 707, DPB 1 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(9, 0.0); // Run 707, DPB 1 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(10, 0.0); // Run 707, DPB 1 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(11, 0.0); // Run 707, DPB 1 ASIC 5 + unpacker_much->SetTimeOffsetNsAsic(12, 0.0); // Run 707, DPB 2 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(13, 0.0); // Run 707, DPB 2 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(14, 0.0); // Run 707, DPB 2 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(15, 0.0); // Run 707, DPB 2 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(16, 0.0); // Run 707, DPB 2 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(17, 0.0); // Run 707, DPB 2 ASIC 5 + unpacker_much->SetTimeOffsetNsAsic(18, 9590.0); // Run 707, DPB 3 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(19, 9590.0); // Run 707, DPB 3 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(20, 9630.0); // Run 707, DPB 3 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(21, 9590.0); // Run 707, DPB 3 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(22, 0.0); // Run 707, DPB 3 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(23, 0.0); // Run 707, DPB 3 ASIC 5 + unpacker_much->SetTimeOffsetNsAsic(24, 0.0); // Run 707, DPB 4 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(25, 0.0); // Run 707, DPB 4 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(26, 0.0); // Run 707, DPB 4 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(27, 0.0); // Run 707, DPB 4 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(28, 0.0); // Run 707, DPB 4 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(29, 0.0); // Run 707, DPB 4 ASIC 5 + unpacker_much->SetTimeOffsetNsAsic(30, 0.0); // Run 707, DPB 5 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(31, 0.0); // Run 707, DPB 5 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(32, 7170.0); // Run 707, DPB 5 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(33, 7170.0); // Run 707, DPB 5 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(34, 0.0); // Run 707, DPB 5 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(35, 0.0); // Run 707, DPB 5 ASIC 5 break; - } // 159 -*/ + } // 707 + case 750: { + /// General System offsets (= offsets between sub-systems) + //unpacker_sts ->SetTimeOffsetNs( -1750 ); // Run 750 + //unpacker_much->SetTimeOffsetNs( -1750 ); // Run 750 + + /// ASIC specific offsets (= offsets inside sub-system) + unpacker_much->SetTimeOffsetNsAsic(0, 0.0); // Run 750, DPB 0 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(1, 0.0); // Run 750, DPB 0 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(2, 0.0); // Run 750, DPB 0 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(3, 0.0); // Run 750, DPB 0 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(4, 0.0); // Run 750, DPB 0 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(5, 0.0); // Run 750, DPB 0 ASIC 5 + unpacker_much->SetTimeOffsetNsAsic(6, 0.0); // Run 750, DPB 1 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(7, 0.0); // Run 750, DPB 1 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(8, 0.0); // Run 750, DPB 1 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(9, 0.0); // Run 750, DPB 1 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(10, 0.0); // Run 750, DPB 1 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(11, 0.0); // Run 750, DPB 1 ASIC 5 + unpacker_much->SetTimeOffsetNsAsic(12, 0.0); // Run 750, DPB 2 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(13, 0.0); // Run 750, DPB 2 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(14, 0.0); // Run 750, DPB 2 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(15, 0.0); // Run 750, DPB 2 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(16, 0.0); // Run 750, DPB 2 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(17, 0.0); // Run 750, DPB 2 ASIC 5 + unpacker_much->SetTimeOffsetNsAsic(18, 6400.0); // Run 750, DPB 3 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(19, 6400.0); // Run 750, DPB 3 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(20, 6400.0); // Run 750, DPB 3 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(21, 6400.0); // Run 750, DPB 3 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(22, 0.0); // Run 750, DPB 3 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(23, 0.0); // Run 750, DPB 3 ASIC 5 + unpacker_much->SetTimeOffsetNsAsic(24, 0.0); // Run 750, DPB 4 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(25, 0.0); // Run 750, DPB 4 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(26, 0.0); // Run 750, DPB 4 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(27, 0.0); // Run 750, DPB 4 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(28, 0.0); // Run 750, DPB 4 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(29, 0.0); // Run 750, DPB 4 ASIC 5 + unpacker_much->SetTimeOffsetNsAsic(30, 0.0); // Run 750, DPB 5 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(31, 0.0); // Run 750, DPB 5 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(32, 3170.0); // Run 750, DPB 5 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(33, 3170.0); // Run 750, DPB 5 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(34, 0.0); // Run 750, DPB 5 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(35, 0.0); // Run 750, DPB 5 ASIC 5 + break; + } // 750 + case 759: { + /// General System offsets (= offsets between sub-systems) + //unpacker_sts ->SetTimeOffsetNs( -1759 ); // Run 759 + //unpacker_much->SetTimeOffsetNs( -1759 ); // Run 759 + unpacker_trdR->SetTimeOffsetNs(190); // Run 759 + + /// ASIC specific offsets (= offsets inside sub-system) + unpacker_much->SetTimeOffsetNsAsic(0, 0.0); // Run 759, DPB 0 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(1, 0.0); // Run 759, DPB 0 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(2, 0.0); // Run 759, DPB 0 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(3, 0.0); // Run 759, DPB 0 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(4, 0.0); // Run 759, DPB 0 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(5, 0.0); // Run 759, DPB 0 ASIC 5 + unpacker_much->SetTimeOffsetNsAsic(6, 0.0); // Run 759, DPB 1 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(7, 0.0); // Run 759, DPB 1 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(8, 0.0); // Run 759, DPB 1 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(9, 0.0); // Run 759, DPB 1 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(10, 0.0); // Run 759, DPB 1 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(11, 0.0); // Run 759, DPB 1 ASIC 5 + unpacker_much->SetTimeOffsetNsAsic(12, 0.0); // Run 759, DPB 2 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(13, 0.0); // Run 759, DPB 2 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(14, 0.0); // Run 759, DPB 2 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(15, 0.0); // Run 759, DPB 2 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(16, 0.0); // Run 759, DPB 2 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(17, 0.0); // Run 759, DPB 2 ASIC 5 + unpacker_much->SetTimeOffsetNsAsic(18, 3200.0); // Run 759, DPB 3 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(19, 3200.0); // Run 759, DPB 3 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(20, 3200.0); // Run 759, DPB 3 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(21, 3200.0); // Run 759, DPB 3 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(22, 0.0); // Run 759, DPB 3 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(23, 0.0); // Run 759, DPB 3 ASIC 5 + unpacker_much->SetTimeOffsetNsAsic(24, 3200.0); // Run 759, DPB 4 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(25, 3200.0); // Run 759, DPB 4 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(26, 3200.0); // Run 759, DPB 4 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(27, 0.0); // Run 759, DPB 4 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(28, 0.0); // Run 759, DPB 4 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(29, 0.0); // Run 759, DPB 4 ASIC 5 + unpacker_much->SetTimeOffsetNsAsic(30, 0.0); // Run 759, DPB 5 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(31, 0.0); // Run 759, DPB 5 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(32, -30.0); // Run 759, DPB 5 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(33, -30.0); // Run 759, DPB 5 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(34, 0.0); // Run 759, DPB 5 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(35, 0.0); // Run 759, DPB 5 ASIC 5 + break; + } // 759 + case 760: { + /// General System offsets (= offsets between sub-systems) + //unpacker_sts ->SetTimeOffsetNs( -1760 ); // Run 760 + //unpacker_much->SetTimeOffsetNs( -1760 ); // Run 760 + unpacker_trdR->SetTimeOffsetNs(-75); // Run 760 + + /// ASIC specific offsets (= offsets inside sub-system) + unpacker_much->SetTimeOffsetNsAsic(0, 0.0); // Run 760, DPB 0 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(1, 0.0); // Run 760, DPB 0 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(2, 0.0); // Run 760, DPB 0 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(3, 0.0); // Run 760, DPB 0 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(4, 0.0); // Run 760, DPB 0 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(5, 0.0); // Run 760, DPB 0 ASIC 5 + unpacker_much->SetTimeOffsetNsAsic(6, 0.0); // Run 760, DPB 1 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(7, 0.0); // Run 760, DPB 1 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(8, 0.0); // Run 760, DPB 1 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(9, 0.0); // Run 760, DPB 1 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(10, 0.0); // Run 760, DPB 1 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(11, 0.0); // Run 760, DPB 1 ASIC 5 + unpacker_much->SetTimeOffsetNsAsic(12, 0.0); // Run 760, DPB 2 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(13, 0.0); // Run 760, DPB 2 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(14, 0.0); // Run 760, DPB 2 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(15, 0.0); // Run 760, DPB 2 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(16, 0.0); // Run 760, DPB 2 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(17, 0.0); // Run 760, DPB 2 ASIC 5 + unpacker_much->SetTimeOffsetNsAsic(18, 0.0); // Run 760, DPB 3 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(19, 0.0); // Run 760, DPB 3 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(20, 0.0); // Run 760, DPB 3 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(21, 0.0); // Run 760, DPB 3 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(22, 0.0); // Run 760, DPB 3 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(23, 0.0); // Run 760, DPB 3 ASIC 5 + unpacker_much->SetTimeOffsetNsAsic(24, 3160.0); // Run 760, DPB 4 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(25, 3160.0); // Run 760, DPB 4 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(26, 3160.0); // Run 760, DPB 4 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(27, 0.0); // Run 760, DPB 4 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(28, 0.0); // Run 760, DPB 4 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(29, 0.0); // Run 760, DPB 4 ASIC 5 + unpacker_much->SetTimeOffsetNsAsic(30, 0.0); // Run 760, DPB 5 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(31, 0.0); // Run 760, DPB 5 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(32, -30.0); // Run 760, DPB 5 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(33, -30.0); // Run 760, DPB 5 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(34, 0.0); // Run 760, DPB 5 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(35, 0.0); // Run 760, DPB 5 ASIC 5 + break; + } // 760 + case 761: { + /// General System offsets (= offsets between sub-systems) + //unpacker_sts ->SetTimeOffsetNs( -1761 ); // Run 761 + //unpacker_much->SetTimeOffsetNs( -1761 ); // Run 761 + unpacker_trdR->SetTimeOffsetNs(90); // Run 761 + + /// ASIC specific offsets (= offsets inside sub-system) + unpacker_much->SetTimeOffsetNsAsic(0, 0.0); // Run 761, DPB 0 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(1, 0.0); // Run 761, DPB 0 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(2, 0.0); // Run 761, DPB 0 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(3, 0.0); // Run 761, DPB 0 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(4, 0.0); // Run 761, DPB 0 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(5, 0.0); // Run 761, DPB 0 ASIC 5 + unpacker_much->SetTimeOffsetNsAsic(6, 0.0); // Run 761, DPB 1 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(7, 0.0); // Run 761, DPB 1 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(8, 0.0); // Run 761, DPB 1 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(9, 0.0); // Run 761, DPB 1 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(10, 0.0); // Run 761, DPB 1 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(11, 0.0); // Run 761, DPB 1 ASIC 5 + unpacker_much->SetTimeOffsetNsAsic(12, 0.0); // Run 761, DPB 2 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(13, 0.0); // Run 761, DPB 2 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(14, 0.0); // Run 761, DPB 2 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(15, 0.0); // Run 761, DPB 2 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(16, 0.0); // Run 761, DPB 2 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(17, 0.0); // Run 761, DPB 2 ASIC 5 + unpacker_much->SetTimeOffsetNsAsic(18, 3200.0); // Run 761, DPB 3 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(19, 3200.0); // Run 761, DPB 3 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(20, 3200.0); // Run 761, DPB 3 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(21, 3200.0); // Run 761, DPB 3 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(22, 0.0); // Run 761, DPB 3 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(23, 0.0); // Run 761, DPB 3 ASIC 5 + unpacker_much->SetTimeOffsetNsAsic(24, 6360.0); // Run 761, DPB 4 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(25, 6360.0); // Run 761, DPB 4 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(26, 6360.0); // Run 761, DPB 4 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(27, 0.0); // Run 761, DPB 4 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(28, 0.0); // Run 761, DPB 4 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(29, 0.0); // Run 761, DPB 4 ASIC 5 + unpacker_much->SetTimeOffsetNsAsic(30, 0.0); // Run 761, DPB 5 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(31, 0.0); // Run 761, DPB 5 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(32, 6360.0); // Run 761, DPB 5 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(33, 6360.0); // Run 761, DPB 5 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(34, 0.0); // Run 761, DPB 5 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(35, 0.0); // Run 761, DPB 5 ASIC 5 + break; + } // 761 + case 762: { + /// General System offsets (= offsets between sub-systems) + //unpacker_sts ->SetTimeOffsetNs( -1762 ); // Run 762 + //unpacker_much->SetTimeOffsetNs( -1762 ); // Run 762 + unpacker_trdR->SetTimeOffsetNs(60); // Run 762 + + /// ASIC specific offsets (= offsets inside sub-system) + unpacker_much->SetTimeOffsetNsAsic(0, 0.0); // Run 762, DPB 0 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(1, 0.0); // Run 762, DPB 0 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(2, 0.0); // Run 762, DPB 0 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(3, 0.0); // Run 762, DPB 0 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(4, 0.0); // Run 762, DPB 0 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(5, 0.0); // Run 762, DPB 0 ASIC 5 + unpacker_much->SetTimeOffsetNsAsic(6, 0.0); // Run 762, DPB 1 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(7, 0.0); // Run 762, DPB 1 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(8, 0.0); // Run 762, DPB 1 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(9, 0.0); // Run 762, DPB 1 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(10, 0.0); // Run 762, DPB 1 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(11, 0.0); // Run 762, DPB 1 ASIC 5 + unpacker_much->SetTimeOffsetNsAsic(12, 0.0); // Run 762, DPB 2 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(13, 0.0); // Run 762, DPB 2 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(14, 0.0); // Run 762, DPB 2 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(15, 0.0); // Run 762, DPB 2 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(16, 0.0); // Run 762, DPB 2 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(17, 0.0); // Run 762, DPB 2 ASIC 5 + unpacker_much->SetTimeOffsetNsAsic(18, 4800.0); // Run 762, DPB 3 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(19, 4800.0); // Run 762, DPB 3 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(20, 4800.0); // Run 762, DPB 3 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(21, 4800.0); // Run 762, DPB 3 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(22, 0.0); // Run 762, DPB 3 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(23, 0.0); // Run 762, DPB 3 ASIC 5 + unpacker_much->SetTimeOffsetNsAsic(24, 9550.0); // Run 762, DPB 4 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(25, 9550.0); // Run 762, DPB 4 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(26, 9550.0); // Run 762, DPB 4 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(27, 0.0); // Run 762, DPB 4 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(28, 0.0); // Run 762, DPB 4 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(29, 0.0); // Run 762, DPB 4 ASIC 5 + unpacker_much->SetTimeOffsetNsAsic(30, 0.0); // Run 762, DPB 5 ASIC 0 + unpacker_much->SetTimeOffsetNsAsic(31, 0.0); // Run 762, DPB 5 ASIC 1 + unpacker_much->SetTimeOffsetNsAsic(32, -30.0); // Run 762, DPB 5 ASIC 2 + unpacker_much->SetTimeOffsetNsAsic(33, -30.0); // Run 762, DPB 5 ASIC 3 + unpacker_much->SetTimeOffsetNsAsic(34, 0.0); // Run 762, DPB 5 ASIC 4 + unpacker_much->SetTimeOffsetNsAsic(35, 0.0); // Run 762, DPB 5 ASIC 5 + break; + } // 762 + case 811: { + unpacker_trdR->SetTimeOffsetNs(84.38); + break; + } // 811 + case 812: { + unpacker_trdR->SetTimeOffsetNs(165.62); + break; + } // 812 + case 816: { + unpacker_trdR->SetTimeOffsetNs(-9.38); + break; + } // 816 + case 819: { + unpacker_trdR->SetTimeOffsetNs(-140.62); + break; + } // 819 + case 820: { + unpacker_trdR->SetTimeOffsetNs(109.38); + break; + } // 820 + case 821: { + unpacker_trdR->SetTimeOffsetNs(-65.62); + break; + } // 821 + case 822: { + unpacker_trdR->SetTimeOffsetNs(59.38); + break; + } // 822 + case 824: { + unpacker_trdR->SetTimeOffsetNs(-165.62); + break; + } // 824 + case 826: { + unpacker_trdR->SetTimeOffsetNs(59.38); + break; + } // 826 + case 827: { + unpacker_trdR->SetTimeOffsetNs(-15.62); + break; + } // 827 + case 828: { + unpacker_trdR->SetTimeOffsetNs(-109.38); + break; + } // 828 + case 830: { + unpacker_trdR->SetTimeOffsetNs(15.62); + break; + } // 830 + case 831: { + // unpacker_trdR->SetTimeOffsetNs( 70.00 ); + unpacker_trdR->SetTimeOffsetNs(-25.00); + + std::cout << "MUCH: Feb by feb time offset correction......" << std::endl; + UInt_t uRun, uNx; + Double_t offset; + ifstream infile_off("../mcbm2020/parameters/time_offset_much.txt"); + if (!infile_off) { + std::cout << "can not open time offset MUCH parameter List" << std::endl; + return kFALSE; + } // if (!infile_off) + while (!infile_off.eof()) { + infile_off >> uRun >> uNx >> offset; + if(uRun != 831) continue; + unpacker_much->SetTimeOffsetNsAsic(uNx, offset); + } // while (!infile_off.eof()) + infile_off.close(); + std::cout << "masking noisy channels......" << std::endl; + UInt_t uChan = 0; + ifstream infile_noise("../mcbm2020/parameters/much_noisy_channel_list.txt"); + if (!infile_noise) { + std::cout << "can not open MUCH noisy channel List" << std::endl; + return kFALSE; + } // if (!infile_noise) + while (!infile_noise.eof()) { + infile_noise >> uRun >> uNx >> uChan; + if(uRun != 831) continue; + unpacker_much->MaskNoisyChannel(uNx, uChan, kTRUE ); + } // while (!infile_noise.eof()) + infile_noise.close(); + break; + } // 831 + case 836: { + unpacker_trdR->SetTimeOffsetNs(-40.62); + break; + } // 836 default: break; } // switch( uRunId ) - + /// FIXME: Re-enable clang formatting after parameters tuning + /* clang-format on */ // --- Source task CbmMcbm2018Source* source = new CbmMcbm2018Source(); + source->SetWriteOutputFlag(kTRUE); // For writing TS metadata /* TString inFile = Form( "/scratch/mcbm_data/mcbm_all/data/%3u_pn02_0000.tsa;", uRunId ); inFile += Form( "/scratch/mcbm_data/mcbm_all/data/%3u_pn04_0000.tsa;", uRunId ); @@ -243,13 +604,11 @@ void unpack_tsa_mcbm_mfles(UInt_t uRunId = 0, source->AddUnpacker(unpacker_trdR, 0x40, ECbmModuleId::kTrd); // Trd source->AddUnpacker(unpacker_tof, 0x60, ECbmModuleId::kTof); //gDPB A & B & C source->AddUnpacker(unpacker_tof, 0x90, ECbmModuleId::kTof); //gDPB T0 A & B - /// Avoid unpacking runs with RICH calibration triggers in first file until unpacker fixed - if (358 != uRunId && 361 != uRunId && 367 != uRunId && 369 != uRunId) - source->AddUnpacker(unpacker_rich, 0x30, ECbmModuleId::kRich); //RICH trb + source->AddUnpacker(unpacker_rich, 0x30, ECbmModuleId::kRich); //RICH trb source->AddUnpacker(unpacker_psd, 0x80, ECbmModuleId::kPsd); //PSD // --- Event header - FairEventHeader* event = new CbmTbEvent(); + FairEventHeader* event = new FairEventHeader(); event->SetRunId(uRunId); // --- RootFileSink