99 gPathGemConfig +=
"/parameters/gem/XMLConfigs/";
105 cout <<
" Current GEM Configuration : RunSpring2017"
112 cout <<
" Current GEM Configuration : RunSpring2018"
120 cout <<
" Current GEM Configuration : GemRunSRCSpring2018"
127 cout <<
" Current GEM Configuration : RunSRC2021"
134 cout <<
" Current GEM Configuration : Run8"
141 cout <<
" Current GEM Configuration : Run9"
155 Fatal(
"BmnGemStripHitMaker::createGemDetector()",
" !!! Current configuration is not set !!! ");
160 for (
Int_t iStat = 0; iStat < nStat; iStat++) {
161 const Int_t nParams = 3;
163 for (
Int_t iPar = 0; iPar < nParams; iPar++) {
172 vector<UniValue*> shifts;
175 for (
Int_t iStat = 0; iStat < nStat; iStat++) {
176 const Int_t nParams = 3;
177 for (
Int_t iPar = 0; iPar < nParams; iPar++) {
185 for (
Int_t iStat = 0; iStat < nStat; iStat++) {
197 vector<UniValue*> algnShifts;
199 coeffAlignCorrs->
GetValue(algnShifts);
201 for (
Int_t iStat = 0; iStat < nStat; iStat++) {
202 const Int_t nParams = 3;
205 for (
Int_t iMod = 0; iMod < nModul; iMod++) {
207 for (
Int_t iPar = 0; iPar < nParams; iPar++) {
211 (coeffAlignCorrs) ? ((
AlignmentValue*)algnShifts[iStat * nModul + iMod])->value[iPar] : 0.0;
346 Int_t AddedDigits = 0;
347 Int_t AddedStripDigitMatches = 0;
367 AddedStripDigitMatches++;
372 stripDigitNumberMatch.
AddLink(1.0, idigit);
373 module->SetStripDigitNumberMatchInLayer(digit->GetStripLayer(), digit->GetStripNumber(), stripDigitNumberMatch);
377 cout <<
" Processed strip digits : " << AddedDigits <<
"\n";
379 cout <<
" Added strip digit MC-matches : " << AddedStripDigitMatches <<
"\n";
385 Int_t NCalculatedPoints =
StationSet->CountNProcessedPointsInDetector();
387 cout <<
" Calculated points : " << NCalculatedPoints <<
"\n";
389 cout <<
"BmnGemStripHitMaker: " << NCalculatedPoints <<
" hits\n";
391 Int_t clear_matched_points_cnt = 0;
393 map<Int_t, StripCluster> UniqueUpperClusters;
394 map<Int_t, StripCluster> UniqueLowerClusters;
400 if (
Abs(
fField->GetBy(0., 0., 0.)) > FLT_EPSILON)
402 Bx =
Abs(
fField->GetBx(0.0, 0.0, 135.0));
403 By =
Abs(
fField->GetBy(0.0, 0.0, 135.0));
406 for (
Int_t iStation = 0; iStation <
StationSet->GetNStations(); ++iStation) {
415 for (
size_t iCluster = 0; iCluster < layer.
GetStripClusters().size(); ++iCluster) {
432 Int_t NIntersectionPointsInModule =
module->GetNIntersectionPoints();
435 Int_t NPseudoIntersectionsInModule = 0;
437 for (
Int_t iPoint = 0; iPoint < NIntersectionPointsInModule + NPseudoIntersectionsInModule; ++iPoint) {
446 if (iPoint < NIntersectionPointsInModule) {
449 x =
module->GetIntersectionPointX(iPoint);
450 y =
module->GetIntersectionPointY(iPoint);
451 z =
module->GetZPositionRegistered();
452 x_err =
module->GetIntersectionPointXError(iPoint);
453 y_err =
module->GetIntersectionPointYError(iPoint);
462 x =
module->GetPseudoIntersectionX(iPoint - NIntersectionPointsInModule);
463 y =
module->GetPseudoIntersectionY(iPoint - NIntersectionPointsInModule);
464 z =
module->GetZPositionRegistered();
465 x_err =
module->GetPseudoIntersectionXError(iPoint - NIntersectionPointsInModule);
466 y_err =
module->GetPseudoIntersectionYError(iPoint - NIntersectionPointsInModule);
477 x = -point_transformed.
X();
478 y = point_transformed.
Y();
479 z = point_transformed.
Z();
482 Int_t RefMCIndex = -1;
486 if (iPoint < NIntersectionPointsInModule) {
487 mc_match_hit =
module->GetIntersectionPointMatch(iPoint);
489 mc_match_hit =
module->GetPseudoIntersectionMatch(iPoint - NIntersectionPointsInModule);
492 Int_t most_probably_index = -1;
497 clear_matched_points_cnt++;
498 for (
Int_t ilink = 0; ilink < n_links; ilink++) {
501 if (weight > max_weight) {
503 most_probably_index = index;
507 RefMCIndex = most_probably_index;
550 Int_t sign = (
module->GetElectronDriftDirection() == ForwardZAxisEDrift) ? +1 : -1;
565 if (iPoint < NIntersectionPointsInModule) {
573 iPoint - NIntersectionPointsInModule));
597 if (iPoint < NIntersectionPointsInModule) {
598 digiMatch =
module->GetIntersectionPointDigitNumberMatch(iPoint);
602 digiMatch =
module->GetPseudoIntersectionDigitNumberMatch(iPoint - NIntersectionPointsInModule);
614 if (iindex == jindex) {
625 hit->SetRefIndex(-1);
629 FairRootManager::Instance()->SetUseFairLinks(
kTRUE);
631 if (iPoint < NIntersectionPointsInModule) {
632 hitMatch =
module->GetIntersectionPointMatch(iPoint);
634 hitMatch =
module->GetPseudoIntersectionMatch(iPoint - NIntersectionPointsInModule);
641 if (hit->GetRefIndex() >= 0) {
643 trID = mcp->GetTrackID();
647 for (
int jl = 0; jl < int(links.size()); ++jl) {
650 flink.SetEntry(trID);
654 FairRootManager::Instance()->SetUseFairLinks(
kFALSE);
681 cout <<
" N clear matches with MC-points = " << clear_matched_points_cnt <<
"\n";