diff --git a/.gitignore b/.gitignore index 239fcefa5b5a2d453fa9e9a8a095a2573888a7c7..2745b1178c21b35b2a20b9d5a23f166416fd9e7f 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,15 @@ # Comment some single files Dart*.cfg +*.root +*.pdf +*.orig +*.out +*.old +*core_dump* +*.digi.par +*0 +*1 +*.info +*~ +external* diff --git a/MQ/hitbuilder/startMQ_Mcbm2020.sh b/MQ/hitbuilder/startMQ_Mcbm2020.sh index 945cd4a960118aa2a4e2699d0fcca51437367937..c6a28633dace96cee0c39293688a46db77d44d35 100644 --- a/MQ/hitbuilder/startMQ_Mcbm2020.sh +++ b/MQ/hitbuilder/startMQ_Mcbm2020.sh @@ -29,13 +29,13 @@ _Opt=$5 _ntimeslices=-1 #_ntimeslices=10000 -_iUnp=4 +_iUnp=1 _batch=1 _pulmulmin=5 _pultotmin=50 _pultotmax=500 +#_puldetref=12 # TSR=022 _puldetref=16 # TSR=032 -#_puldetref=17 # TSR=032 #_tofftof=0. _tofftof=-30. @@ -69,10 +69,11 @@ fi #_digibdffile=/lustre/nyx/cbm/users/nh/CBM/cbmroot/trunk/parameters/tof/v18j_cosmicHD.digibdf.par #_digiparfile=/lustre/nyx/cbm/users/nh/CBM/cbmroot/trunk/parameters/tof/tof_v18j_cosmicHD.digi.par _digibdffile=/lustre/cbm/users/nh/CBM/cbmroot/trunk/parameters/tof/v19b_mcbm.digibdf.par -_digiparfile=/lustre/cbm/users/nh/CBM/cbmroot/trunk/parameters/tof/tof_v19b_mcbm.digi.par +#_digiparfile=/lustre/cbm/users/nh/CBM/cbmroot/trunk/parameters/tof/tof_v19b_mcbm.digi.par # ROOT files -_geofile=/lustre/cbm/users/nh/CBM/cbmroot/trunk/macro/beamtime/mcbm2018/tof_v18l_mCbm.par.root +#_geofile=/lustre/cbm/users/nh/CBM/cbmroot/trunk/macro/beamtime/mcbm2018/tof_v18l_mCbm.par.root +_geofile=/lustre/cbm/users/nh/CBM/cbmroot/trunk/macro/beamtime/mcbm2018/tof_mcbm_beam_2019_03.par.root # MQ ports _pPar=5603 @@ -81,7 +82,7 @@ _pCmd=5623 _pDig=5633 rm -v nohup.out -#rm -v *log +rm -v *log rm all_* PARAMETERSERVER="parmq-server" @@ -93,7 +94,8 @@ PARAMETERSERVER+=" --id parmq-server" PARAMETERSERVER+=" --channel-name parameters" PARAMETERSERVER+=" --channel-config name=parameters,type=rep,method=bind,rateLogging=0,transport=zeromq,address=tcp://127.0.0.1:$_pPar" #PARAMETERSERVER+=" --libs-to-load libCbmTof;libCbmFlibMcbm2018" -PARAMETERSERVER+=" --first-input-name $_mapfile;$_digiparfile;$_digibdffile" +#PARAMETERSERVER+=" --first-input-name $_mapfile;$_digiparfile;$_digibdffile" +PARAMETERSERVER+=" --first-input-name $_mapfile;$_digibdffile" PARAMETERSERVER+=" --first-input-type ASCII" PARAMETERSERVER+=" --second-input-name $_geofile" PARAMETERSERVER+=" --second-input-type ROOT" @@ -144,16 +146,17 @@ UNPACKER+=" --channel-config name=syscmd,type=sub,method=connect,rateLogging=0,t #UNPACKER+=" --severity DEBUG" UNPACKER+=" --severity INFO" UNPACKER+=" --SelectComponents 1" -#UNPACKER+=" --ReqBeam 20486" # diamond -> 0x00005006 +#UNPACKER+=" --ReqBeam 20486" # diamond -> 0x00005006 v14a +UNPACKER+=" --ReqBeam 10246" # diamond -> 0x00002806 v21a if [[ $_reqmod -lt 1 ]]; then UNPACKER+=" --ReqMode 0" case $_reqmod in 0) ;; -1) - UNPACKER+=" --ReqDet0 20486" # diamond -> 0x00005006 - UNPACKER+=" --ReqDet1 65590" # RPC 031 -> 0x00010036 - UNPACKER+=" --ReqDet2 65606" # RPC 041 + UNPACKER+=" --ReqDet0 10246" # diamond -> 0x00002806 v21a + UNPACKER+=" --ReqDet1 32822" # RPC 031 -> 0x00008036 v21a + UNPACKER+=" --ReqDet2 32838" # RPC 041 -> 0x00008046 v21a ;; -2) UNPACKER+=" --ReqDet0 20486" # diamond @@ -166,12 +169,18 @@ if [[ $_reqmod -lt 1 ]]; then UNPACKER+=" --ReqDet1 196662" # RPC 033 UNPACKER+=" --ReqDet2 196678" # RPC 043 ;; # for BUC + + -4) # v21a address mode + UNPACKER+=" --ReqDet0 10246" # diamond + UNPACKER+=" --ReqDet1 65542" # RPC 002 + UNPACKER+=" --ReqDet2 65574" # RPC 022 + ;; -190) UNPACKER+=" --ReqDet0 20486" # diamond UNPACKER+=" --ReqDet1 65606" # RPC 041 UNPACKER+=" --ReqDet2 36870" # RPC 900 - UNPACKER+=" --ReqDet3 102406" # RPC 901 + UNPACKER+=" --ReqDet3 102406" # RPC 901 ;; # for double stack calibration -191) @@ -213,10 +222,10 @@ UNPACKER+=" --PulMulMin $_pulmulmin" UNPACKER+=" --PulTotMin $_pultotmin" UNPACKER+=" --PulTotMax $_pultotmax" UNPACKER+=" --ToffTof $_tofftof" -UNPACKER+=" --RefModType 5" +UNPACKER+=" --RefModType 5" UNPACKER+=" --RefModId 0" -UNPACKER+=" --RefCtrType 4" -UNPACKER+=" --RefCtrId 0" +UNPACKER+=" --RefCtrType 0" +UNPACKER+=" --RefCtrId 0" if [[ $_batch = 1 ]]; then UNPACKER+=" --control static" UNPACKER+=" --log-to-file Unp$_iUnp.out" @@ -242,7 +251,8 @@ HITBUILDER+=" --severity INFO" #HITBUILDER+=" --severity WARN" HITBUILDER+=" --OutRootFile $_outdir$_digifile" #HITBUILDER+=" --MaxEvent 10000000" -HITBUILDER+=" --RunId 1552883952" +#HITBUILDER+=" --RunId 1552883952" +HITBUILDER+=" --RunId 1601311083" HITBUILDER+=" --PulserMode $_pulmode" HITBUILDER+=" --PulMulMin $_pulmulmin" HITBUILDER+=" --PulTotMin $_pultotmin" diff --git a/analysis/detectors/tof/CbmTofAnaTestbeam.cxx b/analysis/detectors/tof/CbmTofAnaTestbeam.cxx index 212359bd09076d287d0b7925fa6c4acd9cfc6c19..baeb24620c72b6e6299bea0b73bdc9296ce87d3e 100644 --- a/analysis/detectors/tof/CbmTofAnaTestbeam.cxx +++ b/analysis/detectors/tof/CbmTofAnaTestbeam.cxx @@ -79,7 +79,6 @@ Double_t dTDia; Double_t dDTD4Min = 1.E8; static Double_t StartAnalysisTime = 0.; static Double_t dTLEvt = 0.; -static Double_t StartSpillTime = -100.; Int_t iNspills = 0; @@ -549,6 +548,7 @@ CbmTofAnaTestbeam::CbmTofAnaTestbeam(const char* name, Int_t verbose) , fdMulDMax(0.) , fdSpillDuration(20.) , fdSpillBreak(0.9) + , fdStartSpillTime(-100) , fdDTDia(0.) , fdDTD4MAX(0.) , fdMul0Max(0.) @@ -4827,23 +4827,23 @@ Bool_t CbmTofAnaTestbeam::FillHistos() { /* - if( dMulD>0 && dMul4>0 && dMul0>0 && dTDia - StartSpillTime > SpillDuration*1.E9 ) { - Double_t dDTSpill=dTDia-StartSpillTime; - StartSpillTime=dTDia; + if( dMulD>0 && dMul4>0 && dMul0>0 && dTDia - fdStartSpillTime > SpillDuration*1.E9 ) { + Double_t dDTSpill=dTDia-fdStartSpillTime; + fdStartSpillTime=dTDia; */ - if (fdSpillBreak == 0.) StartSpillTime = dTAv; + if (fdSpillBreak == 0.) fdStartSpillTime = dTAv; - Double_t dDTSpill = dTAv - StartSpillTime; + Double_t dDTSpill = dTAv - fdStartSpillTime; if (fDetIdMap.size() > 3 && dMulD > 0) { // FIXME - hardwired constants Double_t dDTLEvt = dTAv - dTLEvt; dTLEvt = dTAv; if (dDTLEvt > fdSpillBreak * 1.E9 && dDTSpill > fdSpillDuration * 1.E9) { - StartSpillTime = dTAv; + fdStartSpillTime = dTAv; iNspills++; LOG(info) << "StartSpillTime for " << iNspills << Form(". spill set to %f ns after %7.4f s, at event %d with " "MulD %2.0f, MulDet %d, DTLE %7.4f s ", - StartSpillTime, + fdStartSpillTime, dDTSpill / 1.E9, fEvents, dMulD, @@ -4853,7 +4853,7 @@ Bool_t CbmTofAnaTestbeam::FillHistos() { } Double_t dTIR = (dTAv - StartAnalysisTime) / 1.E9; fhRate_all->Fill(dTIR, 1. / fhRate_all->GetBinWidth(1)); - if (StartSpillTime < 0) { + if (fdStartSpillTime < 0) { LOG(debug) << "SpillStartTime not available, abort Anatestbeam "; return kFALSE; } @@ -4913,7 +4913,7 @@ Bool_t CbmTofAnaTestbeam::FillHistos() { if (fTrbHeader != NULL) fhTIS_all->Fill(fTrbHeader->GetTimeInSpill()); else - fhTIS_all->Fill((dTAv - StartSpillTime) / 1.E9); + fhTIS_all->Fill((dTAv - fdStartSpillTime) / 1.E9); fhTIR_all->Fill(dTIR); @@ -4929,10 +4929,10 @@ Bool_t CbmTofAnaTestbeam::FillHistos() { if (BSel[0]) { fhSelEfficiency->Fill(kTRUE, fiNAccRefTracks); - fhSelHitTupleEfficiencyTIS->Fill(kTRUE, (dTAv - StartSpillTime) / 1.E9); + fhSelHitTupleEfficiencyTIS->Fill(kTRUE, (dTAv - fdStartSpillTime) / 1.E9); } else { fhSelEfficiency->Fill(kFALSE, fiNAccRefTracks); - fhSelHitTupleEfficiencyTIS->Fill(kFALSE, (dTAv - StartSpillTime) / 1.E9); + fhSelHitTupleEfficiencyTIS->Fill(kFALSE, (dTAv - fdStartSpillTime) / 1.E9); } @@ -4944,7 +4944,7 @@ Bool_t CbmTofAnaTestbeam::FillHistos() { if (fTrbHeader != NULL) fhTIS_sel->Fill(fTrbHeader->GetTimeInSpill()); else - fhTIS_sel->Fill((dTAv - StartSpillTime) / 1.E9); + fhTIS_sel->Fill((dTAv - fdStartSpillTime) / 1.E9); fhTIR_sel->Fill(dTIR); fhTofD4sel->Fill(pHitRef->GetTime() - dTDia); // general normalisation @@ -5059,7 +5059,7 @@ Bool_t CbmTofAnaTestbeam::FillHistos() { if (fTrbHeader != NULL) fhTIS_sel2->Fill(fTrbHeader->GetTimeInSpill()); else - fhTIS_sel2->Fill((dTAv - StartSpillTime) / 1.E9); + fhTIS_sel2->Fill((dTAv - fdStartSpillTime) / 1.E9); fhTIR_sel2->Fill(dTIR); if (NULL != fClusterizer) @@ -5425,12 +5425,12 @@ Bool_t CbmTofAnaTestbeam::FillHistos() { fhSelMatchEfficiency->Fill(kTRUE, fiNAccRefTracks); fhSelHitTupleMatchEfficiencyTIS->Fill(kTRUE, - (dTAv - StartSpillTime) / 1.E9); + (dTAv - fdStartSpillTime) / 1.E9); if (fTrbHeader != NULL) fhTIS_sel1->Fill(fTrbHeader->GetTimeInSpill()); else - fhTIS_sel1->Fill((dTAv - StartSpillTime) / 1.E9); + fhTIS_sel1->Fill((dTAv - fdStartSpillTime) / 1.E9); fhTIR_sel1->Fill(dTIR); if (NULL != fClusterizer) @@ -5572,7 +5572,7 @@ Bool_t CbmTofAnaTestbeam::FillHistos() { if (fTrbHeader != NULL) fhTISDT04D4best->Fill(fTrbHeader->GetTimeInSpill(), dToD); else - fhTISDT04D4best->Fill((dTAv - StartSpillTime) / 1.E9, dToD); + fhTISDT04D4best->Fill((dTAv - fdStartSpillTime) / 1.E9, dToD); if (fbMonteCarloComparison) { Int_t iDutHitInd = fTofHitsColl->IndexOf(pHit1); @@ -5907,15 +5907,15 @@ Bool_t CbmTofAnaTestbeam::FillHistos() { fhSelTypeNNResidualX->Fill(0., xPos1 - xPos2 - fdDXMean); fhSelTypeNNResidualY->Fill(0., yPos1 - yPos2 - fdDYMean); - fhSelHitTupleResidualTTIS->Fill((dTAv - StartSpillTime) / 1.E9, dToD); - fhSelHitTupleDutCluSizeTIS->Fill((dTAv - StartSpillTime) / 1.E9, + fhSelHitTupleResidualTTIS->Fill((dTAv - fdStartSpillTime) / 1.E9, dToD); + fhSelHitTupleDutCluSizeTIS->Fill((dTAv - fdStartSpillTime) / 1.E9, dCluSize0); } // fdChi2Lim end else { fhSelMatchEfficiency->Fill(kFALSE, fiNAccRefTracks); fhSelHitTupleMatchEfficiencyTIS->Fill(kFALSE, - (dTAv - StartSpillTime) / 1.E9); + (dTAv - fdStartSpillTime) / 1.E9); fhSelTypeNNChiSq->Fill(0., 3. * Chi2List[iM0]); fhSelTypeNNResidualT->Fill(0., dToD); @@ -5947,7 +5947,7 @@ Bool_t CbmTofAnaTestbeam::FillHistos() { else { fhSelMatchEfficiency->Fill(kFALSE, fiNAccRefTracks); fhSelHitTupleMatchEfficiencyTIS->Fill(kFALSE, - (dTAv - StartSpillTime) / 1.E9); + (dTAv - fdStartSpillTime) / 1.E9); } } // BSel[0] condition end @@ -5980,14 +5980,14 @@ Bool_t CbmTofAnaTestbeam::FillHistos() { } //(fdMemoryTime > 0.) end */ - fhTIS_Nhit->Fill((dTAv - StartSpillTime) / 1.E9, (Double_t) iNbTofHits); + fhTIS_Nhit->Fill((dTAv - fdStartSpillTime) / 1.E9, (Double_t) iNbTofHits); if (NULL != fTofTrackColl && NULL != fFindTracks) { Bool_t bSelTrackletFound(kFALSE); Int_t iBestTrklFitIndex(-1); Double_t dBestTrklFitRedChiSq(1.E300); iNbTofTracks = fTofTrackColl->GetEntries(); - fhTIS_Ntrk->Fill((dTAv - StartSpillTime) / 1.E9, (Double_t) iNbTofTracks); + fhTIS_Ntrk->Fill((dTAv - fdStartSpillTime) / 1.E9, (Double_t) iNbTofTracks); Int_t NStations = fFindTracks->GetNStations(); LOG(debug) << Form("Tracklet analysis of %d tracklets from %d stations", @@ -6051,12 +6051,12 @@ Bool_t CbmTofAnaTestbeam::FillHistos() { } fhTrklNofHitsRateInSpill->Fill( - (pTrk->GetTime() - StartSpillTime) / 1.E9, + (pTrk->GetTime() - fdStartSpillTime) / 1.E9, pTrk->GetNofHits()); // Monitor tracklet size for (Int_t iTH = 0; iTH < pTrk->GetNofHits(); iTH++) { // Loop over Tracklet hits fhTrklDetHitRateInSpill->Fill( - (pTrk->GetTime() - StartSpillTime) / 1.E9, // Station hit rate + (pTrk->GetTime() - fdStartSpillTime) / 1.E9, // Station hit rate fFindTracks->GetStationOfAddr( pTrk->GetTofHitPointer(iTH)->GetAddress() & DetMask)); } @@ -6273,7 +6273,7 @@ Bool_t CbmTofAnaTestbeam::FillHistos() { // fill tracklet histos Double_t dTiS = - (dTAv - StartSpillTime) / 1.E9; // Time in Spill of current event + (dTAv - fdStartSpillTime) / 1.E9; // Time in Spill of current event for (Int_t iTrk = 0; iTrk < iNbTofTracks; iTrk++) { // loop over all Tracklets CbmTofTracklet* pTrk = (CbmTofTracklet*) fTofTrackColl->At(iTrk); @@ -6707,7 +6707,7 @@ Bool_t CbmTofAnaTestbeam::FillHistos() { fhSelTrklMatchEfficiency->Fill(kTRUE, fiNAccRefTracks); fhSelTrklMatchEfficiencyTIS->Fill(kTRUE, - (dTAv - StartSpillTime) / 1.E9); + (dTAv - fdStartSpillTime) / 1.E9); if (fbMonteCarloComparison) { if (fbAttachDutHitToTracklet) { @@ -6825,10 +6825,10 @@ Bool_t CbmTofAnaTestbeam::FillHistos() { CbmMatch* tDutHitDigiMatch = dynamic_cast<CbmMatch*>(fTofDigiMatchColl->At(iDutHitIndex)); - fhSelTrklResidualTTIS->Fill((dTAv - StartSpillTime) / 1.E9, + fhSelTrklResidualTTIS->Fill((dTAv - fdStartSpillTime) / 1.E9, pHit->GetTime() - pTrk->GetFitT(pHit->GetZ())); - fhSelTrklDutCluSizeTIS->Fill((dTAv - StartSpillTime) / 1.E9, + fhSelTrklDutCluSizeTIS->Fill((dTAv - fdStartSpillTime) / 1.E9, tDutHitDigiMatch->GetNofLinks() / 2); } @@ -6893,7 +6893,7 @@ Bool_t CbmTofAnaTestbeam::FillHistos() { fhSelTrklMatchEfficiency->Fill(kFALSE, fiNAccRefTracks); fhSelTrklMatchEfficiencyTIS->Fill(kFALSE, - (dTAv - StartSpillTime) / 1.E9); + (dTAv - fdStartSpillTime) / 1.E9); } // no match for this track @@ -6943,7 +6943,7 @@ Bool_t CbmTofAnaTestbeam::FillHistos() { fhSelTrklMatchEfficiency->Fill(kFALSE, fiNAccRefTracks); fhSelTrklMatchEfficiencyTIS->Fill(kFALSE, - (dTAv - StartSpillTime) / 1.E9); + (dTAv - fdStartSpillTime) / 1.E9); } } // end of loop over all tracklets @@ -7044,10 +7044,10 @@ Bool_t CbmTofAnaTestbeam::FillHistos() { if (bSelTrackletFound) { fhSelTrklEfficiency->Fill(kTRUE, fiNAccRefTracks); - fhSelTrklEfficiencyTIS->Fill(kTRUE, (dTAv - StartSpillTime) / 1.E9); + fhSelTrklEfficiencyTIS->Fill(kTRUE, (dTAv - fdStartSpillTime) / 1.E9); } else { fhSelTrklEfficiency->Fill(kFALSE, fiNAccRefTracks); - fhSelTrklEfficiencyTIS->Fill(kFALSE, (dTAv - StartSpillTime) / 1.E9); + fhSelTrklEfficiencyTIS->Fill(kFALSE, (dTAv - fdStartSpillTime) / 1.E9); } } // (NULL!=fTofTrackColl && NULL != fFindTracks) end @@ -7344,7 +7344,7 @@ Bool_t CbmTofAnaTestbeam::FillHistos() { fhSelMCTrackMatchEfficiency->Fill(kTRUE, fiNAccRefTracks); fhSelMCTrackMatchEfficiencyTIS->Fill( - kTRUE, (dTAv - StartSpillTime) / 1.E9); + kTRUE, (dTAv - fdStartSpillTime) / 1.E9); if (bGoodSelDutMatch) { fhSelMCTrackMatchPurity->Fill(kTRUE, fiNAccRefTracks); @@ -7355,10 +7355,10 @@ Bool_t CbmTofAnaTestbeam::FillHistos() { CbmMatch* tDutHitDigiMatch = dynamic_cast<CbmMatch*>(fTofDigiMatchColl->At(iDutHit)); - fhSelMCTrackResidualTTIS->Fill((dTAv - StartSpillTime) / 1.E9, + fhSelMCTrackResidualTTIS->Fill((dTAv - fdStartSpillTime) / 1.E9, tHit->GetTime() - tPoint->GetTime() - dMCEventStartTime); - fhSelMCTrackDutCluSizeTIS->Fill((dTAv - StartSpillTime) / 1.E9, + fhSelMCTrackDutCluSizeTIS->Fill((dTAv - fdStartSpillTime) / 1.E9, tDutHitDigiMatch->GetNofLinks() / 2); } else { @@ -7370,12 +7370,12 @@ Bool_t CbmTofAnaTestbeam::FillHistos() { fhSelMCTrackMatchEfficiency->Fill(kFALSE, fiNAccRefTracks); fhSelMCTrackMatchEfficiencyTIS->Fill( - kFALSE, (dTAv - StartSpillTime) / 1.E9); + kFALSE, (dTAv - fdStartSpillTime) / 1.E9); } } else { fhSelMCTrackMatchEfficiency->Fill(kFALSE, fiNAccRefTracks); fhSelMCTrackMatchEfficiencyTIS->Fill( - kFALSE, (dTAv - StartSpillTime) / 1.E9); + kFALSE, (dTAv - fdStartSpillTime) / 1.E9); } @@ -7395,16 +7395,16 @@ Bool_t CbmTofAnaTestbeam::FillHistos() { fhSelMCTrackEfficiency->Fill(kTRUE, fiNAccRefTracks); fhSelMCTrackEfficiencyTIS->Fill(kTRUE, - (dTAv - StartSpillTime) / 1.E9); + (dTAv - fdStartSpillTime) / 1.E9); } else { fhSelMCTrackEfficiency->Fill(kFALSE, fiNAccRefTracks); fhSelMCTrackEfficiencyTIS->Fill(kFALSE, - (dTAv - StartSpillTime) / 1.E9); + (dTAv - fdStartSpillTime) / 1.E9); } } else { fhSelMCTrackEfficiency->Fill(kFALSE, fiNAccRefTracks); - fhSelMCTrackEfficiencyTIS->Fill(kFALSE, (dTAv - StartSpillTime) / 1.E9); + fhSelMCTrackEfficiencyTIS->Fill(kFALSE, (dTAv - fdStartSpillTime) / 1.E9); } } } diff --git a/analysis/detectors/tof/CbmTofAnaTestbeam.h b/analysis/detectors/tof/CbmTofAnaTestbeam.h index 62df4fa8d3c0f9f2c291b88bff0764925c9f0d16..7d828a0a31b688b899e5e4ad48797f6ef82f82ae 100644 --- a/analysis/detectors/tof/CbmTofAnaTestbeam.h +++ b/analysis/detectors/tof/CbmTofAnaTestbeam.h @@ -116,6 +116,7 @@ public: inline void SetSel2TOff(Double_t val) { fdSel2TOff = val; } inline void SetSpillDuration(Double_t val) { fdSpillDuration = val; } inline void SetSpillBreak(Double_t val) { fdSpillBreak = val; } + inline void SetStartSpillTime(Double_t val) { fdStartSpillTime = val; } inline void SetMulDMax(Double_t val) { fdMulDMax = val; } inline void SetDTDia(Double_t val) { fdDTDia = val; } inline void SetDTD4MAX(Double_t val) { fdDTD4MAX = val; } @@ -728,6 +729,7 @@ private: Double_t fdMulDMax; // max multiplicity in Diamond counter Double_t fdSpillDuration; // min. spill length in sec Double_t fdSpillBreak; // min. spill break in sec + Double_t fdStartSpillTime; // Start of Spill, if negative find begin of first spill Double_t fdDTDia; // max time difference between diamonds Double_t fdDTD4MAX; // max time difference between reference & diamond Double_t fdMul0Max; // max multiplicity in Dut diff --git a/core/detectors/tof/CbmTofGeoHandler.cxx b/core/detectors/tof/CbmTofGeoHandler.cxx index 51b61a244108516e5fdee24ee2f89000dc6be9b6..16aa53a049ffc1bbecf8d0144cd1acb781ff29ca 100644 --- a/core/detectors/tof/CbmTofGeoHandler.cxx +++ b/core/detectors/tof/CbmTofGeoHandler.cxx @@ -111,7 +111,6 @@ Int_t CbmTofGeoHandler::CheckGeometryVersion() { || (TString(node->GetName()).Contains("v16e")) || (TString(node->GetName()).Contains("v17a")) || (TString(node->GetName()).Contains("v17c")) - || (TString(node->GetName()).Contains("v18")) || (TString(node->GetName()).Contains("v19"))) { LOG(info) << "CbmTofGeoHandler::CheckGeometryVersion: Found TOF geometry " @@ -131,6 +130,7 @@ Int_t CbmTofGeoHandler::CheckGeometryVersion() { } return fGeoVersion; } else if ((TString(node->GetName()).Contains("v21")) + || (TString(node->GetName()).Contains("v18")) || (TString(node->GetName()).Contains("v20"))) { LOG(info) << "CbmTofGeoHandler::CheckGeometryVersion: Found TOF geometry " diff --git a/macro/beamtime/mcbm2020/ana_trks.C b/macro/beamtime/mcbm2020/ana_trks.C index 835bcb842d21d993ffa16717a3ed3e22befdffea..57810219c5f23fd7c1850399b2c4583a0f058070 100644 --- a/macro/beamtime/mcbm2020/ana_trks.C +++ b/macro/beamtime/mcbm2020/ana_trks.C @@ -47,16 +47,16 @@ void ana_trks(Int_t nEvents = 10000, TString cHstFile = paramDir + Form( - "/hst/%s_%03.0f_%s_%06d_%03d_%03.1f_%03.1f_trk%03d_Cal%s_Ana.hst.root", - cFileId.Data(), - dDeadtime, - cSet.Data(), - iSel, - iSel2, - dScalFac, - dChi2Lim2, - iTrackingSetup, - cCalId.Data()); + "/hst/%s_%03.0f_%s_%06d_%03d_%03.1f_%03.1f_trk%03d_Cal%s_Ana.hst.root", + cFileId.Data(), + dDeadtime, + cSet.Data(), + iSel, + iSel2, + dScalFac, + dChi2Lim2, + iTrackingSetup, + cCalId.Data()); TString cTrkFile = Form("%s_tofFindTracks.hst.root", cCalId.Data()); TString cAnaFile = Form("%s_TrkAnaTestBeam.hst.root", cFileId.Data()); @@ -73,11 +73,11 @@ void ana_trks(Int_t nEvents = 10000, if (iRun < 690) TofGeo = "v20a_mcbm"; else - TofGeo = "v20b_mcbm"; + TofGeo = "v20f_mcbm"; cout << "Geometry version " << TofGeo << endl; - TObjString* tofDigiBdfFile = new TObjString(workDir + "/parameters/tof/tof_" - + TofGeo + ".digibdf.par"); + TObjString* tofDigiBdfFile = + new TObjString(workDir + "/parameters/tof/tof_" + TofGeo + ".digibdf.par"); parFileList->Add(tofDigiBdfFile); TString geoDir = gSystem->Getenv("VMCWORKDIR"); @@ -192,12 +192,12 @@ void ana_trks(Int_t nEvents = 10000, tofFindTracks->SetCalOpt( iCalOpt); // 1 - update offsets, 2 - update walk, 0 - bypass tofFindTracks->SetCorMode(iGenCor); // valid options: 0,1,2,3,4,5,6, 10 - 19 - tofFindTracks->SetTtTarg( - 0.0605); // target value for Mar2020 triple stack -> betapeak ~ 0.95 - //tofFindTracks->SetTtTarg(0.062); // target value for Mar2020 triple stack -> betapeak ~ 0.95 - //tofFindTracks->SetTtTarg(0.058); // target value for Mar2020 double stack - //tofFindTracks->SetTtTarg(0.051); // target value Nov2019 - //tofFindTracks->SetTtTarg(0.035); // target value for inverse velocity, > 0.033 ns/cm! + tofFindTracks->SetTtTarg(0.065); // target value for Mar2020 triple stack -> betapeak ~ 0.95 + //tofFindTracks->SetTtTarg(0.0605); // target value for Mar2020 triple stack -> betapeak ~ 0.95 + //tofFindTracks->SetTtTarg(0.058); // target value for Mar2020 double stack + //tofFindTracks->SetTtTarg(0.055); // target value Nov2019 (triple stack run 831) + //tofFindTracks->SetTtTarg(0.048); // target value Nov2019 (double stack run 714) + //tofFindTracks->SetTtTarg(0.035); // target value for inverse velocity, > 0.033 ns/cm! tofFindTracks->SetCalParFileName( cTrkFile); // Tracker parameter value file name tofFindTracks->SetBeamCounter(5, 0, 0); // default beam counter @@ -418,14 +418,25 @@ void ana_trks(Int_t nEvents = 10000, tofFindTracks->SetStation(5, iDut, iDutSm, iDutRpc); break; + case 9: // calibration of Star2 + iMinNofHits = 4; + iNStations = 5; + iNReqStations = 5; + tofFindTracks->SetStation(0, 5, 0, 0); + tofFindTracks->SetStation(2, 9, 0, 1); + tofFindTracks->SetStation(1, 0, 4, 1); + tofFindTracks->SetStation(3, 9, 0, 0); + tofFindTracks->SetStation(4, 0, 3, 1); + break; + case 10: iMinNofHits = 3; iNStations = 4; iNReqStations = 4; tofFindTracks->SetStation(0, 5, 0, 0); - tofFindTracks->SetStation(1, 0, 1, 2); + tofFindTracks->SetStation(3, 0, 1, 2); tofFindTracks->SetStation(2, 0, 0, 2); - tofFindTracks->SetStation(3, 0, 2, 2); + tofFindTracks->SetStation(1, 0, 2, 2); break; default: diff --git a/macro/beamtime/mcbm2020/ana_trks_eval.C b/macro/beamtime/mcbm2020/ana_trks_eval.C index 71d8156c5e6bf712aa9643d91607cdad82d3409a..3a023191830b3ff952849c00e793d883589185ea 100644 --- a/macro/beamtime/mcbm2020/ana_trks_eval.C +++ b/macro/beamtime/mcbm2020/ana_trks_eval.C @@ -41,9 +41,12 @@ void ana_trks_eval(Int_t nEvents = 10000, InputDigiFile = paramDir + "/data/" + cFileId.Data() + ".rec.root"; iRun = 700; } - TString OutputFile = paramDir + "/data/hits_" + cFileId.Data() + TString InputTrklFile = paramDir + "/data/hits_" + cFileId.Data() + Form("_%s_%06d_%03d", cSet.Data(), iSel, iSel2) + ".out.root"; + TString OutputFile = paramDir + "/data/ana_" + cFileId.Data() + + Form("_%s_%06d_%03d", cSet.Data(), iSel, iSel2) + + ".out.root"; TString cHstFile = paramDir + Form( @@ -61,6 +64,7 @@ void ana_trks_eval(Int_t nEvents = 10000, TString cAnaFile = Form("%s_TrkAnaTestBeam.hst.root", cFileId.Data()); cout << " InputDigiFile = " << InputDigiFile << endl; + cout << " InputTrklFile = " << InputTrklFile << endl; TString shcmd = "rm -v " + ParFile; gSystem->Exec(shcmd.Data()); @@ -73,11 +77,11 @@ void ana_trks_eval(Int_t nEvents = 10000, if (iRun < 690) TofGeo = "v20a_mcbm"; else - TofGeo = "v20b_mcbm"; + TofGeo = "v20f_mcbm"; cout << "Geometry version " << TofGeo << endl; TObjString* tofDigiBdfFile = - new TObjString(workDir + "/parameters/tof/" + TofGeo + ".digibdf.par"); + new TObjString(workDir + "/parameters/tof/tof_" + TofGeo + ".digibdf.par"); parFileList->Add(tofDigiBdfFile); TString geoDir = gSystem->Getenv("VMCWORKDIR"); @@ -109,8 +113,9 @@ void ana_trks_eval(Int_t nEvents = 10000, //run->SetInputFile(InputFile.Data()); //run->AddFriend(InputDigiFile.Data()); run->SetInputFile(InputDigiFile.Data()); - //run->AddFriend(InputFile.Data()); - //run->SetOutputFile(OutputFile); + //run->AddFriend(InputTrklFile.Data()); + //run->SetInputFile(InputTrklFile.Data()); + run->SetUserOutputFileName(OutputFile.Data()); run->SetSink(new FairRootFileSink(run->GetUserOutputFileName())); @@ -232,8 +237,8 @@ void ana_trks_eval(Int_t nEvents = 10000, tofFindTracks->SetSIGT(dTsig); // allow for variable deviations in ns } iMinNofHits = 3; - iNStations = 30; - iNReqStations = 3; + iNStations = 28; + iNReqStations = 4; tofFindTracks->SetStation(0, 5, 0, 0); tofFindTracks->SetStation(1, 0, 2, 2); tofFindTracks->SetStation(2, 0, 1, 2); @@ -262,8 +267,8 @@ void ana_trks_eval(Int_t nEvents = 10000, tofFindTracks->SetStation(25, 0, 3, 4); tofFindTracks->SetStation(26, 9, 0, 0); tofFindTracks->SetStation(27, 9, 0, 1); - tofFindTracks->SetStation(28, 6, 0, 0); - tofFindTracks->SetStation(29, 6, 0, 1); + //tofFindTracks->SetStation(28, 6, 0, 0); + //tofFindTracks->SetStation(29, 6, 0, 1); break; case 2: @@ -349,26 +354,50 @@ void ana_trks_eval(Int_t nEvents = 10000, tofFindTracks->SetStation(3, iDut, iDutSm, iDutRpc); break; + case 40: + iMinNofHits = 3; + iNStations = 15; + iNReqStations = 4; + tofFindTracks->SetStation(0, 0, 2, 2); + tofFindTracks->SetStation(1, 0, 1, 2); + tofFindTracks->SetStation(2, 0, 0, 2); + tofFindTracks->SetStation(0, 0, 2, 1); + tofFindTracks->SetStation(1, 0, 1, 1); + tofFindTracks->SetStation(2, 0, 0, 1); + tofFindTracks->SetStation(0, 0, 2, 0); + tofFindTracks->SetStation(1, 0, 1, 0); + tofFindTracks->SetStation(2, 0, 0, 0); + tofFindTracks->SetStation(0, 0, 2, 3); + tofFindTracks->SetStation(1, 0, 1, 3); + tofFindTracks->SetStation(2, 0, 0, 3); + tofFindTracks->SetStation(0, 0, 2, 4); + tofFindTracks->SetStation(1, 0, 1, 4); + tofFindTracks->SetStation(2, 0, 0, 4); + break; + case 5: // for calibration of 2-stack and add-on counters (STAR2, BUC) - iMinNofHits = 4; - iNStations = 5; - iNReqStations = 5; + iMinNofHits = 3; + iNStations = 7; + iNReqStations = 4; + tofFindTracks->SetStation(6, 0, 4, 1); + tofFindTracks->SetStation(1, 6, 0, 1); + tofFindTracks->SetStation(2, 9, 0, 0); + tofFindTracks->SetStation(3, 9, 0, 1); + tofFindTracks->SetStation(4, 6, 0, 0); + tofFindTracks->SetStation(5, 0, 3, 1); tofFindTracks->SetStation(0, 5, 0, 0); - tofFindTracks->SetStation(1, 0, 4, 1); - tofFindTracks->SetStation(2, 0, 3, 1); - tofFindTracks->SetStation(3, 9, 0, 0); - tofFindTracks->SetStation(4, iDut, iDutSm, iDutRpc); break; - case 6: // for double stack USTC counter 900 evaluation - iMinNofHits = 4; - iNStations = 5; - iNReqStations = 5; + case 6: // for double stack USTC counter evaluation + iMinNofHits = 5; + iNStations = 6; + iNReqStations = 6; tofFindTracks->SetStation(0, 5, 0, 0); - tofFindTracks->SetStation(1, 0, 4, 1); - tofFindTracks->SetStation(2, 0, 3, 1); - tofFindTracks->SetStation(3, 9, 0, 1); - tofFindTracks->SetStation(4, iDut, iDutSm, iDutRpc); + tofFindTracks->SetStation(1, 6, 0, 1); + tofFindTracks->SetStation(2, 0, 4, 1); + tofFindTracks->SetStation(3, 6, 0, 0); + tofFindTracks->SetStation(4, 0, 3, 1); + tofFindTracks->SetStation(5, iDut, iDutSm, iDutRpc); break; case 7: // for double stack USTC counter evaluation @@ -392,25 +421,26 @@ void ana_trks_eval(Int_t nEvents = 10000, tofFindTracks->SetStation(4, 0, 3, 1); tofFindTracks->SetStation(5, iDut, iDutSm, iDutRpc); break; - - case 9: - iMinNofHits = 3; - iNStations = 4; - iNReqStations = 4; + + case 9: // calibration of Star2 + iMinNofHits = 4; + iNStations = 5; + iNReqStations = 5; tofFindTracks->SetStation(0, 5, 0, 0); - tofFindTracks->SetStation(1, 0, 2, 1); - tofFindTracks->SetStation(2, 0, 0, 1); - tofFindTracks->SetStation(3, 0, 1, 1); + tofFindTracks->SetStation(2, 9, 0, 1); + tofFindTracks->SetStation(1, 0, 4, 1); + tofFindTracks->SetStation(3, 9, 0, 0); + tofFindTracks->SetStation(4, 0, 3, 1); break; - + case 10: iMinNofHits = 3; iNStations = 4; iNReqStations = 4; tofFindTracks->SetStation(0, 5, 0, 0); - tofFindTracks->SetStation(1, 0, 1, 0); + tofFindTracks->SetStation(1, 0, 2, 0); tofFindTracks->SetStation(2, 0, 0, 0); - tofFindTracks->SetStation(3, 0, 2, 0); + tofFindTracks->SetStation(3, 0, 1, 0); break; case 11: @@ -418,9 +448,9 @@ void ana_trks_eval(Int_t nEvents = 10000, iNStations = 4; iNReqStations = 4; tofFindTracks->SetStation(0, 5, 0, 0); - tofFindTracks->SetStation(1, 0, 1, 1); + tofFindTracks->SetStation(1, 0, 2, 1); tofFindTracks->SetStation(2, 0, 0, 1); - tofFindTracks->SetStation(3, 0, 2, 1); + tofFindTracks->SetStation(3, 0, 1, 1); break; case 12: @@ -428,81 +458,32 @@ void ana_trks_eval(Int_t nEvents = 10000, iNStations = 4; iNReqStations = 4; tofFindTracks->SetStation(0, 5, 0, 0); - tofFindTracks->SetStation(1, 0, 1, 2); + tofFindTracks->SetStation(1, 0, 2, 2); tofFindTracks->SetStation(2, 0, 0, 2); - tofFindTracks->SetStation(3, 0, 2, 2); + tofFindTracks->SetStation(3, 0, 1, 2); break; - + case 13: iMinNofHits = 3; iNStations = 4; iNReqStations = 4; tofFindTracks->SetStation(0, 5, 0, 0); - tofFindTracks->SetStation(1, 0, 1, 3); - tofFindTracks->SetStation(2, 0, 0, 3); - tofFindTracks->SetStation(3, 0, 2, 3); + tofFindTracks->SetStation(1, 0, 2, 2); + tofFindTracks->SetStation(2, 0, 0, 2); + tofFindTracks->SetStation(3, 0, 1, 2); break; + case 14: iMinNofHits = 3; iNStations = 4; iNReqStations = 4; tofFindTracks->SetStation(0, 5, 0, 0); - tofFindTracks->SetStation(1, 0, 1, 4); - tofFindTracks->SetStation(2, 0, 0, 4); - tofFindTracks->SetStation(3, 0, 2, 4); - break; - - case 20: - iMinNofHits = 3; - iNStations = 4; - iNReqStations = 4; - tofFindTracks->SetStation(0, 0, 2, 0); - tofFindTracks->SetStation(1, 0, 0, 0); - tofFindTracks->SetStation(2, 0, 1, 0); - tofFindTracks->SetStation(0, 5, 0, 0); - break; - - case 21: - iMinNofHits = 3; - iNStations = 4; - iNReqStations = 4; - tofFindTracks->SetStation(0, 0, 2, 1); - tofFindTracks->SetStation(1, 0, 0, 1); - tofFindTracks->SetStation(2, 0, 1, 1); - tofFindTracks->SetStation(0, 5, 0, 0); - break; - - case 22: - iMinNofHits = 3; - iNStations = 4; - iNReqStations = 4; - tofFindTracks->SetStation(0, 0, 2, 2); - tofFindTracks->SetStation(1, 0, 0, 2); - tofFindTracks->SetStation(2, 0, 1, 2); - tofFindTracks->SetStation(0, 5, 0, 0); - break; - - case 23: - iMinNofHits = 3; - iNStations = 4; - iNReqStations = 4; - tofFindTracks->SetStation(0, 0, 2, 3); - tofFindTracks->SetStation(1, 0, 0, 3); - tofFindTracks->SetStation(2, 0, 1, 3); - tofFindTracks->SetStation(0, 5, 0, 0); - break; - - case 24: - iMinNofHits = 3; - iNStations = 4; - iNReqStations = 4; - tofFindTracks->SetStation(0, 0, 2, 4); - tofFindTracks->SetStation(1, 0, 0, 4); - tofFindTracks->SetStation(2, 0, 1, 4); - tofFindTracks->SetStation(0, 5, 0, 0); + tofFindTracks->SetStation(1, 0, 2, 2); + tofFindTracks->SetStation(2, 0, 0, 2); + tofFindTracks->SetStation(3, 0, 1, 2); break; - + default: cout << "Tracking setup " << iTrackingSetup << " not implemented " << endl; @@ -514,7 +495,6 @@ void ana_trks_eval(Int_t nEvents = 10000, tofFindTracks->SetNReqStations(iNReqStations); tofFindTracks->PrintSetup(); run->AddTask(tofFindTracks); - // ========================================================================= // === Analysis === // ========================================================================= @@ -531,6 +511,8 @@ void ana_trks_eval(Int_t nEvents = 10000, //CbmTofAnaTestbeam defaults tofAnaTestbeam->SetR0LimFit( 20.); // limit distance of fitted track to nominal vertex + tofAnaTestbeam->SetStartSpillTime(0.); + tofAnaTestbeam->SetDXMean(0.); tofAnaTestbeam->SetDYMean(0.); tofAnaTestbeam->SetDTMean(0.); // in ns @@ -626,41 +608,9 @@ void ana_trks_eval(Int_t nEvents = 10000, } break; - case 10020: - case 11021: - case 12022: - case 13023: - case 14024: - switch (iRSelin) { - case 500: - tofAnaTestbeam->SetTShift(4.8); // Shift DTD4 to 0 - tofAnaTestbeam->SetTOffD4(11.); // Shift DTD4 to physical value - - switch (iSel2in) { - case 0: - tofAnaTestbeam->SetSel2TOff(0.); // Shift Sel2 time peak to 0 - break; - case 1: - tofAnaTestbeam->SetSel2TOff(0.0); // Shift Sel2 time peak to 0 - break; - case 2: - tofAnaTestbeam->SetSel2TOff(0.0); // Shift Sel2 time peak to 0 - break; - case 3: - tofAnaTestbeam->SetSel2TOff(0.0); // Shift Sel2 time peak to 0 - break; - case 4: - tofAnaTestbeam->SetSel2TOff(0.0); // Shift Sel2 time peak to 0 - break; - - default:; - } - break; - default:; - } - break; - - case 30040: + case 700040: + case 900040: + case 901040: switch (iRSelin) { case 500: tofAnaTestbeam->SetTShift(0.3); // Shift DTD4 to 0 @@ -700,11 +650,10 @@ void ana_trks_eval(Int_t nEvents = 10000, break; case 31: if (iMc == 0) { - tofAnaTestbeam->SetSel2TOff( - 0.05); // Shift Sel2 time peak to 0 + //tofAnaTestbeam->SetSel2TOff(-0.55); // Shift Sel2 time peak to 0 + tofAnaTestbeam->SetSel2TOff(0.3); // Shift Sel2 time peak to 0 } else { // MC - tofAnaTestbeam->SetSel2TOff( - -1.3); // Shift Sel2 time peak to 0 + tofAnaTestbeam->SetSel2TOff(-1.3); // Shift Sel2 time peak to 0 } break; case 600: @@ -738,6 +687,24 @@ void ana_trks_eval(Int_t nEvents = 10000, } break; + case 12022: + switch (iRSelin) { + case 500: + tofAnaTestbeam->SetTShift(3.); // Shift DTD4 to 0 + tofAnaTestbeam->SetTOffD4(15.); // Shift DTD4 to physical value + + switch (iSel2in) { + case 2: + tofAnaTestbeam->SetSel2TOff(0.25); // Shift Sel2 time peak to 0 + break; + + default:; + } + break; + default:; + } + break; + default: cout << "Better to define analysis setup! Running with default offset " "parameter... " @@ -797,7 +764,7 @@ void ana_trks_eval(Int_t nEvents = 10000, gROOT->LoadMacro("pl_over_trk.C"); gROOT->LoadMacro("pl_calib_trk.C"); gROOT->LoadMacro("pl_XY_trk.C"); - //gROOT->LoadMacro("pl_vert_trk.C"); + gROOT->LoadMacro("pl_vert_trk.C"); gROOT->LoadMacro("pl_pull_trk.C"); gROOT->LoadMacro("pl_all_Track2D.C"); gROOT->LoadMacro("pl_TIS.C"); @@ -818,9 +785,11 @@ void ana_trks_eval(Int_t nEvents = 10000, Form("pl_Dut_Vel(\"%d%d%d\")", iDut, iDutSm, iDutRpc)); gInterpreter->ProcessLine("pl_eff_XY()"); gInterpreter->ProcessLine("pl_calib_trk()"); + gInterpreter->ProcessLine("pl_vert_trk()"); gInterpreter->ProcessLine("pl_all_Track2D(1)"); gInterpreter->ProcessLine("pl_all_Track2D(2)"); + gInterpreter->ProcessLine("pl_all_Track2D(4)"); TString over_trk = "pl_over_trk(" + (TString)(Form("%d", iNStations)) + ")"; gInterpreter->ProcessLine(over_trk); diff --git a/macro/beamtime/mcbm2020/ana_trksi.C b/macro/beamtime/mcbm2020/ana_trksi.C index 5fa2b9f630657f3ba9875a069fa8e39eed1f2c6b..fa413a2e76d86948cc52f015b4eb79724b4249f3 100644 --- a/macro/beamtime/mcbm2020/ana_trksi.C +++ b/macro/beamtime/mcbm2020/ana_trksi.C @@ -1,19 +1,19 @@ void ana_trksi(Int_t nEvents = 10000, - Int_t iSel = 1, - Int_t iGenCor = 1, - TString cFileId = "48.50.7.1", - TString cSet = "000010020", - Int_t iSel2 = 20, - Int_t iTrackingSetup = 2, - Double_t dScalFac = 1., - Double_t dChi2Lim2 = 500., - Double_t dDeadtime = 50, - TString cCalId = "", - Int_t iAnaCor = 1, - Bool_t bUseSigCalib = kFALSE, - Int_t iCalSet = 30040500, - Int_t iCalOpt = 1, - Int_t iMc = 0) { + Int_t iSel = 1, + Int_t iGenCor = 1, + TString cFileId = "48.50.7.1", + TString cSet = "000010020", + Int_t iSel2 = 20, + Int_t iTrackingSetup = 2, + Double_t dScalFac = 1., + Double_t dChi2Lim2 = 500., + Double_t dDeadtime = 50, + TString cCalId = "", + Int_t iAnaCor = 1, + Bool_t bUseSigCalib = kFALSE, + Int_t iCalSet = 30040500, + Int_t iCalOpt = 1, + Int_t iMc = 0) { Int_t iVerbose = 1; if (cCalId == "") cCalId = cFileId; TString FId = cFileId; @@ -46,16 +46,16 @@ void ana_trksi(Int_t nEvents = 10000, TString cHstFile = paramDir + Form( - "/hst/%s_%03.0f_%s_%06d_%03d_%03.1f_%03.1f_trk%03d_Cal%s_Ana.hst.root", - cFileId.Data(), - dDeadtime, - cSet.Data(), - iSel, - iSel2, - dScalFac, - dChi2Lim2, - iTrackingSetup, - cCalId.Data()); + "/hst/%s_%03.0f_%s_%06d_%03d_%03.1f_%03.1f_trk%03d_Cal%s_Ana.hst.root", + cFileId.Data(), + dDeadtime, + cSet.Data(), + iSel, + iSel2, + dScalFac, + dChi2Lim2, + iTrackingSetup, + cCalId.Data()); TString cTrkFile = Form("%s_tofFindTracks.hst.root", cCalId.Data()); TString cAnaFile = Form("%s_TrkAnaTestBeam.hst.root", cFileId.Data()); @@ -72,11 +72,11 @@ void ana_trksi(Int_t nEvents = 10000, if (iRun < 690) TofGeo = "v20a_mcbm"; else - TofGeo = "v20b_mcbm"; + TofGeo = "v20f_mcbm"; cout << "Geometry version " << TofGeo << endl; - TObjString* tofDigiBdfFile = new TObjString(workDir + "/parameters/tof/tof_" - + TofGeo + ".digibdf.par"); + TObjString* tofDigiBdfFile = + new TObjString(workDir + "/parameters/tof/tof_" + TofGeo + ".digibdf.par"); parFileList->Add(tofDigiBdfFile); TString geoDir = gSystem->Getenv("VMCWORKDIR"); @@ -302,7 +302,7 @@ void ana_trksi(Int_t nEvents = 10000, case 3: iMinNofHits = 3; - iNStations = 16; + iNStations = 15; iNReqStations = 4; tofFindTracks->SetStation(0, 0, 2, 2); tofFindTracks->SetStation(1, 0, 1, 2); @@ -316,7 +316,7 @@ void ana_trksi(Int_t nEvents = 10000, tofFindTracks->SetStation(7, 0, 1, 3); tofFindTracks->SetStation(8, 0, 0, 3); - tofFindTracks->SetStation(9, 0, 2, 0); + tofFindTracks->SetStation(9, 0, 2, 0); tofFindTracks->SetStation(10, 0, 1, 0); tofFindTracks->SetStation(11, 0, 0, 0); @@ -324,7 +324,7 @@ void ana_trksi(Int_t nEvents = 10000, tofFindTracks->SetStation(13, 0, 1, 4); tofFindTracks->SetStation(14, 0, 0, 4); - tofFindTracks->SetStation(15, 5, 0, 0); +// tofFindTracks->SetStation(15, 5, 0, 0); /* tofFindTracks->SetStation(16, 0, 3, 2); @@ -418,14 +418,25 @@ void ana_trksi(Int_t nEvents = 10000, tofFindTracks->SetStation(5, iDut, iDutSm, iDutRpc); break; + case 9: // calibration of Star2 + iMinNofHits = 4; + iNStations = 5; + iNReqStations = 5; + tofFindTracks->SetStation(0, 5, 0, 0); + tofFindTracks->SetStation(2, 9, 0, 1); + tofFindTracks->SetStation(1, 0, 4, 1); + tofFindTracks->SetStation(3, 9, 0, 0); + tofFindTracks->SetStation(4, 0, 3, 1); + break; + case 10: iMinNofHits = 3; iNStations = 4; iNReqStations = 4; tofFindTracks->SetStation(0, 5, 0, 0); - tofFindTracks->SetStation(1, 0, 1, 2); + tofFindTracks->SetStation(1, 0, 2, 2); tofFindTracks->SetStation(2, 0, 0, 2); - tofFindTracks->SetStation(3, 0, 2, 2); + tofFindTracks->SetStation(3, 0, 1, 2); break; default: @@ -449,6 +460,7 @@ void ana_trksi(Int_t nEvents = 10000, tofAnaTestbeam->SetHitDistMin(30.); // initialization tofAnaTestbeam->SetEnableMatchPosScaling(kTRUE); tofAnaTestbeam->SetSpillDuration(3.); + tofAnaTestbeam->SetSpillTime(0.); if (iMc == 1) { tofAnaTestbeam->SetSpillDuration(0.); tofAnaTestbeam->SetSpillBreak(0.); @@ -621,6 +633,24 @@ void ana_trksi(Int_t nEvents = 10000, } break; + case 12022: + switch (iRSelin) { + case 500: + tofAnaTestbeam->SetTShift(3.); // Shift DTD4 to 0 + tofAnaTestbeam->SetTOffD4(16.); // Shift DTD4 to physical value + + switch (iSel2in) { + case 2: + tofAnaTestbeam->SetSel2TOff(0.25); // Shift Sel2 time peak to 0 + break; + + default:; + } + break; + default:; + } + break; + default: cout << "Better to define analysis setup! Running with default offset " "parameter... " @@ -629,7 +659,7 @@ void ana_trksi(Int_t nEvents = 10000, } // end of different subsets cout << " Initialize TSHIFT to " << tofAnaTestbeam->GetTShift() << endl; - //run->AddTask(tofAnaTestbeam); + run->AddTask(tofAnaTestbeam); } // ----- Parameter database -------------------------------------------- diff --git a/macro/beamtime/mcbm2020/eval_tracks.sh b/macro/beamtime/mcbm2020/eval_tracks.sh index 6e2052086d0c0b98c616f52127187472ebf978a6..9323007a48c29d0ca01584c12a2e3cbf57676af4 100755 --- a/macro/beamtime/mcbm2020/eval_tracks.sh +++ b/macro/beamtime/mcbm2020/eval_tracks.sh @@ -42,8 +42,14 @@ else cCalId=${CalIdMode} fi +cCalRef=$8 +if [[ ${cCalRef} = "" ]]; then + cCalRef=${cSet:0:9}; + echo use default CalSet $cCalRef +fi + dDTres=10000000 -nEvt=100000000 +nEvt=1000000 cSel2=$iSel2; if [[ $iSel2 < 100 ]]; then @@ -86,20 +92,22 @@ cd ${cRun} mkdir Ana_${cSet}_${iSel}_${cSel2}_${iTraSetup} cp ../rootlogon.C Ana_${cSet}_${iSel}_${cSel2}_${iTraSetup}/ cp ../.rootrc Ana_${cSet}_${iSel}_${cSel2}_${iTraSetup}/ -digiCalFile=`ls -1 ${cCalId}*93_1*.root` +echo look for calfile: ls -1 ${cCalId}*set${cCalRef}_93_1tofClust.hst.root +digiCalFile=`ls -1 ${cCalId}*set${cCalRef}_93_1tofClust.hst.root` cd Ana_${cSet}_${iSel}_${cSel2}_${iTraSetup} rm -v *AnaTestBeam.hst.root cp -v ../../${cCalId}_tofFindTracks.hst.root . echo create symbolic link to digiCalFile $digiCalFile in `pwd` -ln -s ../$digiCalFile ./$digiCalFile +rm -v ./$digiCalFile +ln -s -v ../$digiCalFile ./$digiCalFile while [[ $dDTres > 0 ]]; do for iCal in 1 2 3 5 6 7 8 1 do -root -b -q '../../ana_trks_eval.C('$nEvt','$iSel',-1,"'$cRun'","'$cSet'",'$iSel2','$iTraSetup','$fRange1','$fRange2','$dDeadtime',"'$cCalId'",'$iCal',0,'$iCalSet',0,'$iMc')' +root -b -q '../../ana_trks_eval.C('$nEvt','$iSel',-1,"'$cRun'","'$cSet'",'$iSel2','$iTraSetup','$fRange1','$fRange2','$dDeadtime',"'$cCalId'",'$iCal',0,'$iCalSet',1,'$iMc')' mv -v tofAnaTestBeam.hst.root ${cRun}_TrkAnaTestBeam.hst.root rm all_* diff --git a/macro/beamtime/pl_Dut_Vel.C b/macro/beamtime/pl_Dut_Vel.C index 2d865661d05495884694880f9112f25c83f4f9e7..68770955294531dbd09a9e772bde5b734eeef6d4 100644 --- a/macro/beamtime/pl_Dut_Vel.C +++ b/macro/beamtime/pl_Dut_Vel.C @@ -1,4 +1,5 @@ void pl_Dut_Vel(const char* cDut = "900", + Double_t dEffMin =0., Double_t Tstart = 0., Double_t Tend = 50., TString sysinfo = "") { @@ -52,6 +53,7 @@ void pl_Dut_Vel(const char* cDut = "900", gPad->Update(); auto graph = pEffVel->GetPaintedGraph(); graph->GetXaxis()->SetRangeUser(Tstart, Tend); + graph->SetMinimum(dEffMin); gPad->Update(); diff --git a/macro/beamtime/pl_TIR.C b/macro/beamtime/pl_TIR.C index 413e480acbb843d13348da7ca6a0e961737d6318..98446edc5787598420b860044fc25cf5a080ddd2 100644 --- a/macro/beamtime/pl_TIR.C +++ b/macro/beamtime/pl_TIR.C @@ -1,5 +1,6 @@ void pl_TIR(Double_t Tstart = 0., Double_t Tend = 1000., + Double_t dFracMin = 0.0, Double_t dFracMax = 1.05, TString sysinfo = "") { gROOT->LoadMacro( @@ -92,7 +93,7 @@ void pl_TIR(Double_t Tstart = 0., */ TEfficiency* pEffSel = new TEfficiency(*hTIR_sel2, *hTIR_all); - pEffSel->SetTitle("Selector (MRef & Sel2) efficiency"); + pEffSel->SetTitle("Selector (MRef & Sel2) efficiency; time (s); efficiency"); pEffSel->Draw("AP"); gPad->Update(); auto graph = pEffSel->GetPaintedGraph(); @@ -119,12 +120,13 @@ void pl_TIR(Double_t Tstart = 0., hselsel1frac->SetLineColor(hTIR_sel1->GetLineColor()); */ TEfficiency* pEffDut = new TEfficiency(*hTIR_sel1, *hTIR_sel2); - pEffDut->SetTitle("Relative efficiency of DUT"); + pEffDut->SetTitle("Relative efficiency of DUT; time (s); efficiency"); pEffDut->Draw("AP"); // gPad->SetLogy(); gPad->Update(); auto gEffDut = pEffDut->GetPaintedGraph(); gEffDut->GetXaxis()->SetRangeUser(Tstart, Tend); + gEffDut->SetMinimum(dFracMin); gEffDut->SetMaximum(dFracMax); gPad->Update(); diff --git a/macro/beamtime/pl_over_Mat04D4best.C b/macro/beamtime/pl_over_Mat04D4best.C index d194680b4e5c732daceeb99ffcfdaf430ee37e92..fcf98a4cad7531ee2a95b43c0e9a2bf24e852dd4 100644 --- a/macro/beamtime/pl_over_Mat04D4best.C +++ b/macro/beamtime/pl_over_Mat04D4best.C @@ -118,8 +118,10 @@ void pl_over_Mat04D4best(Int_t iLog = 0) { TString hname2 = "hDTD4DT04D4best_pfx_px"; h2pfxpx = (TH1*) gROOT->FindObjectAny(hname2); - if (h2pfxpx != NULL) h2pfxpx->Draw("same"); - + if (h2pfxpx != NULL) { + h2pfxpx->SetLineColor(6); + h2pfxpx->Draw("same"); + } Int_t iNbinsX = h2->GetNbinsX(); cout << " Histo " << hname << " has " << iNbinsX << " Xbins" << endl; const char* cnamP = Form("%s_py", (char*) hname.Data()); @@ -195,6 +197,12 @@ void pl_over_Mat04D4best(Int_t iLog = 0) { h2->Draw("colz"); h2->ProfileX()->Draw("same"); gPad->SetLogz(); + TString hname2 = "hTexpDT04D4best_pfx_px"; + TH1* hpfxpx = (TH1*) gROOT->FindObjectAny(hname2); + if (hpfxpx != NULL) { + hpfxpx->SetLineColor(6); + hpfxpx->Draw("same"); + } } else { cout << hname << " not found" << endl; } @@ -223,6 +231,13 @@ void pl_over_Mat04D4best(Int_t iLog = 0) { gPad->SetLogz(); TProfile* h2pfx = h2->ProfileX(); h2pfx->Draw("same"); + + TString hname2 = "hDTX4D4best_pfx_px"; + TH1* hpfxpx = (TH1*) gROOT->FindObjectAny(hname2); + if (hpfxpx != NULL) { + hpfxpx->SetLineColor(6); + hpfxpx->Draw("same"); + } } else { cout << hname << " not found" << endl; } @@ -239,6 +254,12 @@ void pl_over_Mat04D4best(Int_t iLog = 0) { h2pfxx->Draw("same"); gPad->SetLogz(); + TString hname2 = "hDTY4D4best_pfx_px"; + TH1* hpfxpx = (TH1*) gROOT->FindObjectAny(hname2); + if (hpfxpx != NULL) { + hpfxpx->SetLineColor(6); + hpfxpx->Draw("same"); + } } else { cout << hname << " not found" << endl; @@ -295,6 +316,14 @@ void pl_over_Mat04D4best(Int_t iLog = 0) { TH1D* h2clu = h2->ProjectionX("_px", 1, h2->GetNbinsY()); dMeanCluSize0 = h2clu->GetMean(); h2->ProfileX()->Draw("same"); + + TString hname2 = "hCluSize0DT04D4best_pfx_px"; + TH1* hpfxpx = (TH1*) gROOT->FindObjectAny(hname2); + if (hpfxpx != NULL) { + hpfxpx->SetLineColor(6); + hpfxpx->Draw("same"); + } + } else { cout << hname << " not found" << endl; } @@ -311,6 +340,14 @@ void pl_over_Mat04D4best(Int_t iLog = 0) { TH1D* h2clu = h2->ProjectionX("_px", 1, h2->GetNbinsY()); dMeanCluSize4 = h2clu->GetMean(); h2->ProfileX()->Draw("same"); + + TString hname2 = "hCluSize4DT04D4best_pfx_px"; + TH1* hpfxpx = (TH1*) gROOT->FindObjectAny(hname2); + if (hpfxpx != NULL) { + hpfxpx->SetLineColor(6); + hpfxpx->Draw("same"); + } + } else { cout << hname << " not found" << endl; } @@ -326,6 +363,14 @@ void pl_over_Mat04D4best(Int_t iLog = 0) { TProfile* h2pfxt = h2->ProfileX(); h2pfxt->Draw("same"); gPad->SetLogz(); + + TString hname2 = "hTot0DT04D4best_pfx_px"; + TH1* hpfxpx = (TH1*) gROOT->FindObjectAny(hname2); + if (hpfxpx != NULL) { + hpfxpx->SetLineColor(6); + hpfxpx->Draw("same"); + } + } else { cout << hname << " not found" << endl; } @@ -341,6 +386,14 @@ void pl_over_Mat04D4best(Int_t iLog = 0) { TProfile* h2pfxt = h2->ProfileX(); h2pfxt->Draw("same"); gPad->SetLogz(); + + TString hname2 = "hTot4DT04D4best_pfx_px"; + TH1* hpfxpx = (TH1*) gROOT->FindObjectAny(hname2); + if (hpfxpx != NULL) { + hpfxpx->SetLineColor(6); + hpfxpx->Draw("same"); + } + } else { cout << hname << " not found" << endl; } diff --git a/macro/mcbm/geometry/tof/Create_TOF_Geometry_v20b_mcbm.C b/macro/mcbm/geometry/tof/Create_TOF_Geometry_v20b_mcbm.C index cf4dbbb47b07be8568b719de8c804b7bb358e626..2ee08762e5637a81dd1512d11e9bb3463634897b 100644 --- a/macro/mcbm/geometry/tof/Create_TOF_Geometry_v20b_mcbm.C +++ b/macro/mcbm/geometry/tof/Create_TOF_Geometry_v20b_mcbm.C @@ -45,6 +45,7 @@ const TString FileNameInfo = fileTag + "_mcbm.geo.info"; // TOF_Z_Front corresponds to front cover of outer super module towers const Float_t TOF_Z_Front_Stand = 247.2; // = z=298 mCBM@SIS18 +const Float_t TOF_X_Front_Stand = -1.6; // = z=298 mCBM@SIS18 const Float_t TOF_Z_Front = 0; // = z=298 mCBM@SIS18 //const Float_t TOF_Z_Front = 130; // = z=225 mCBM@SIS18 //const Float_t TOF_Z_Front = 250; // SIS 100 hadron @@ -141,11 +142,11 @@ const Int_t NCounterInModule[NofModuleTypes] = {5, 5, 3, 5, 5, 1, 2, 1, 8, 2}; const Float_t CounterXStartPosition[NofModuleTypes] = {-58.5, -66.0, -56.0, -60.0, -60.0, 0.0, 0., 0., -7., 0.}; const Float_t CounterXDistance[NofModuleTypes] = - {29.0, 32.0, 51.0, 30.0, 30.0, 0.0, 0., 0., 2., 0.}; + {29.0, 32.0, 51.0, 30.0, 30.0, 0.0, 0., 0., 2., -1.25}; const Float_t CounterYStartPosition[NofModuleTypes] = {0.0, 0.0, 0.0, 0.0, 0.0, 0., 0., -4., -1.3, 0.}; const Float_t CounterYDistance[NofModuleTypes] = - {0.0, 0.0, 0.0, 0.0, 0.0, 0., 0., 8., 0., 0.}; + {0.0, 0.0, 0.0, 0.0, 0.0, 0., 0., 8., 0., 1.3}; const Float_t CounterZDistance[NofModuleTypes] = {-2.5, 0.0, 0.0, 2.5, 2.5, 0., 6., 0., 0.1, 4.}; const Float_t CounterZStartPosition[NofModuleTypes] = @@ -211,13 +212,13 @@ const Float_t Outer_Module_Number[Outer_Module_NTypes][Outer_Module_Col] = const Float_t Star2_First_Z_Position = TOF_Z_Front + 16.5; const Float_t Star2_Delta_Z_Position = 0.; -const Float_t Star2_First_Y_Position = 32.; // +const Float_t Star2_First_Y_Position = 30.35; // const Float_t Star2_Delta_Y_Position = 0.; // const Float_t Star2_rotate_Z = -90.; const Int_t Star2_NTypes = 1; const Float_t Star2_Types[Star2_NTypes] = {9.}; const Float_t Star2_Number[Star2_NTypes] = {1.}; //debugging, V16b -const Float_t Star2_X_Offset[Star2_NTypes] = {51.}; //{62.}; +const Float_t Star2_X_Offset[Star2_NTypes] = {49.}; //{51.}; const Float_t Buc_First_Z_Position = TOF_Z_Front + 50.; const Float_t Buc_Delta_Z_Position = 0.; @@ -322,16 +323,16 @@ void Create_TOF_Geometry_v20b_mcbm() { TGeoVolume* tofstand = new TGeoVolumeAssembly(geoVersionStand); // Mar 2020 run TGeoTranslation* stand_trans = - new TGeoTranslation("", 0., 0., TOF_Z_Front_Stand); + new TGeoTranslation("", TOF_X_Front_Stand, 0., TOF_Z_Front_Stand); // Nov 2019 run // TGeoTranslation* stand_trans = new TGeoTranslation("", 12., 0., TOF_Z_Front_Stand); // TGeoTranslation* stand_trans = new TGeoTranslation("", 0., 0., TOF_Z_Front_Stand); TGeoRotation* stand_rot = new TGeoRotation(); - stand_rot->RotateY(-1.5); //-2.7); + stand_rot->RotateY(-2.9); TGeoCombiTrans* stand_combi_trans = new TGeoCombiTrans(*stand_trans, *stand_rot); - //tof->AddNode(tofstand, 1, stand_combi_trans); - tof->AddNode(tofstand, 1); + tof->AddNode(tofstand, 1, stand_combi_trans); + //tof->AddNode(tofstand, 1); for (Int_t counterType = 0; counterType < NumberOfDifferentCounterTypes; counterType++) { @@ -1018,7 +1019,7 @@ void position_inner_tof_modules(Int_t modNType) { zPos = TOF_Z_Front; const Double_t ModDx[NModules] = {0., 0., 0., 49.8, 49.8}; //const Double_t ModDx[NModules]= { 1.5, 0., -1.5, 49.8, 55.8}; - const Double_t ModDy[NModules] = {0., 0., 0., 0., 0.}; + const Double_t ModDy[NModules] = {0., 0., 0., 2., 0.}; const Double_t ModDz[NModules] = {0., 16.5, 34., 0., 34.}; const Double_t ModAng[NModules] = {-90., -90., -90., -90., -90.0}; TGeoRotation* module_rot = NULL;