diff --git a/sim/detectors/much/CbmMuchDigitizeGem.cxx b/sim/detectors/much/CbmMuchDigitizeGem.cxx index a4c9f32cc87249bb2961d9fe7dd14a6028327983..853b8b923a91b55fe9f5bbdc57d073bc5a47fdfe 100644 --- a/sim/detectors/much/CbmMuchDigitizeGem.cxx +++ b/sim/detectors/much/CbmMuchDigitizeGem.cxx @@ -348,7 +348,7 @@ InitStatus CbmMuchDigitizeGem::Init() geoTag = TString(name(5, name.Length() - 5)); } // geoTag = "v17b"; // modified ekata - cout << " geo tag " << geoTag << endl; + // cout << " geo tag " << geoTag << endl; LOG(info) << fName << ": MUCH geometry tag is " << geoTag; break; } //? node is MUCH @@ -375,7 +375,6 @@ InitStatus CbmMuchDigitizeGem::Init() LOG(info) << fName << ": Using flag " << fFlag << (fFlag ? " (mcbm) " : "(standard)"); } - // Initialize GeoScheme /// Save old global file and folder pointer to avoid messing with FairRoot TFile* oldFile = gFile; @@ -391,6 +390,29 @@ InitStatus CbmMuchDigitizeGem::Init() gDirectory = oldDir; fGeoScheme->Init(stations, fFlag); + //For X, Y position correction according to different geometry file and its tag. + if (fDigiFile.Contains("mcbm")) { + if (fDigiFile.Contains("v19a")) { + fGemTX = 18.5; + fGemTY = 80.5; + } + else if (fDigiFile.Contains("v20a")) { + fGemTX = 18.5; + fGemTY = 80.0; + } + else if (fDigiFile.Contains("v22j")) { // for high intensity runs during June 2022 mMuCh in acceptance + fGemTX = 8.0; + fGemTY = 81.5; + fRpcTX = 66.25; //RPC introduced during 2022 data taking + fRpcTY = -70.5; + } + else if (fDigiFile.Contains("v22k")) { // during benchmark runs. mMuCh is out of acceptance + fGemTX = -44.5; + fGemTY = 81.5; + fRpcTX = 48.0; + fRpcTY = -70.0; + } + } // Determine drift volume width // Double_t driftVolumeWidth = 0.4; // cm - default and will over written by Detector Parameters function. @@ -939,30 +961,22 @@ hPriElAfterDriftpathrpc->Fill(nElectrons);} //------------------------Added by O. Singh 11.12.2017 for mCbm------------------------- Double_t r = 0.0, phi = 0.0; if (fFlag == 1) { //mCbm - TVector3 nVe; - Double_t XX = ve.X(); - Double_t YY = ve.Y(); - Double_t ZZ = ve.Z(); - - //Transfotamation of MuChpoints to pads position - Double_t tX = 18.5; // Ajit + OS + Apar -> For miniMUCH setup in March 2019 - Double_t tY = 80.0; // Ajit + OS + Apar -> For miniMUCH setup in March 2019 - Double_t nXX = XX - tX; - Double_t nYY = YY - tY; - - Double_t nZZ = ZZ; - - nVe.SetX(nXX); - nVe.SetY(nYY); - nVe.SetZ(nZZ); - r = nVe.Perp(); - phi = nVe.Phi(); - } - else { //Cbm - - r = ve.Perp(); - phi = ve.Phi(); + if (module->GetDetectorType() == 3) // GEM + { + ve.SetX(ve.X() - fGemTX); + ve.SetY(ve.Y() - fGemTY); + } + else if (module->GetDetectorType() == 4) // RPC + { + ve.SetX(ve.X() - fRpcTX); + ve.SetY(ve.Y() - fRpcTY); + } + else { + LOG(error) << "Unknown detector type"; + } } + r = ve.Perp(); + phi = ve.Phi(); //-------------------------------------------------------------------------- UInt_t ne = GasGain(); //Number of secondary electrons Double_t r1 = r - fSpotRadius; diff --git a/sim/detectors/much/CbmMuchDigitizeGem.h b/sim/detectors/much/CbmMuchDigitizeGem.h index 048ca85c2bf8be4e01cc35d6182abd6c7a5889fa..13bb6cffc8f0df19a36ea33accd4739fa9022cb6 100644 --- a/sim/detectors/much/CbmMuchDigitizeGem.h +++ b/sim/detectors/much/CbmMuchDigitizeGem.h @@ -6,9 +6,11 @@ *@author Vikas Singhal <vikas@vecc.gov.in> *@since 15.01.2020 *@version 4.0 - *@description: Using std::vector for digi and match containers. - *@author Ekata Nandy (ekata@vecc.gov.in) // @since 21.06.19 : RPC digitization parameters(for 3rd and 4th MUCH station) now have been implemented along with GEM param - *eters (1st and 2nd station) @author Ekata Nandy (ekata@vecc.gov.in) + *@description: Using std::vector for digi and match containers. + *@author Ekata Nandy (ekata@vecc.gov.in) + *@since 21.06.19 + *@description: RPC digitization parameters(for 3rd and 4th MUCH station) now have been implemented along with GEM + * parameters (1st and 2nd station) *@author Vikas Singhal <vikas@vecc.gov.in> *@since 01.10.16 *@version 3.0 @@ -284,6 +286,15 @@ private: void AddCharge(CbmMuchPad* pad, UInt_t charge, Int_t iPoint, Double_t time, Double_t driftTime); void Reset(); + //Below variables are applying X, Y correction for different mCBM geometries. + //In future we'll remove these and try to read directly from Geometry file. + // For GEM + Double_t fGemTX = 0.0; + Double_t fGemTY = 0.0; + // For RPC + Double_t fRpcTX = 0.0; + Double_t fRpcTY = 0.0; + ClassDef(CbmMuchDigitizeGem, 1) }; #endif