@@ -129,6 +129,10 @@ using CompactMFTTrack = CompactMFTTracks;
129129struct muonGlobalAlignment {
130130
131131 static constexpr int GlobalTrackTypeMax = 2 ;
132+ static constexpr int NMchChambers = 10 ;
133+ static constexpr int NMchDetElems = 156 ;
134+ static constexpr int ThetaAbsBoundaryDeg = 3 ;
135+ static constexpr double SlopeResolutionZ = 535 .;
132136
133137 Produces<aod::CompactMFTTracks> mftTable;
134138 Configurable<bool > cfgProduceMFTTable{" cfgProduceMFTTable" , false , " flag to produce MFTsa table" };
@@ -390,7 +394,7 @@ struct muonGlobalAlignment {
390394 } else {
391395 LOGF (fatal, " Reference aligned geometry object is not available in CCDB at timestamp=%llu" , bc.timestamp ());
392396 }
393- for (int i = 0 ; i < 156 ; i++) {
397+ for (int i = 0 ; i < NMchDetElems ; i++) {
394398 int iDEN = GetDetElemId (i);
395399 transformRef[iDEN] = transformation (iDEN);
396400 }
@@ -404,7 +408,7 @@ struct muonGlobalAlignment {
404408 } else {
405409 LOGF (fatal, " New aligned geometry object is not available in CCDB at timestamp=%llu" , bc.timestamp ());
406410 }
407- for (int i = 0 ; i < 156 ; i++) {
411+ for (int i = 0 ; i < NMchDetElems ; i++) {
408412 int iDEN = GetDetElemId (i);
409413 transformNew[iDEN] = transformation (iDEN);
410414 }
@@ -630,7 +634,7 @@ struct muonGlobalAlignment {
630634 // get chamber and element number in chamber
631635 int iCh = 0 ;
632636 int iDet = 0 ;
633- for (int i = 1 ; i <= 10 ; i++) {
637+ for (int i = 1 ; i <= NMchChambers ; i++) {
634638 if (iDetElemNumber < fgSNDetElemCh[i]) {
635639 iCh = i;
636640 iDet = iDetElemNumber - fgSNDetElemCh[i - 1 ];
@@ -639,7 +643,7 @@ struct muonGlobalAlignment {
639643 }
640644
641645 // make sure detector index is valid
642- if (!(iCh > 0 && iCh <= 10 && iDet < fgNDetElemCh[iCh - 1 ])) {
646+ if (!(iCh > 0 && iCh <= NMchChambers && iDet < fgNDetElemCh[iCh - 1 ])) {
643647 LOGF (fatal, " Invalid detector element id: %d" , 100 * iCh + iDet);
644648 }
645649
@@ -682,7 +686,7 @@ struct muonGlobalAlignment {
682686 {
683687 static int nDE = 0 ;
684688 if (nDE <= 0 ) {
685- for (int c = 0 ; c < 10 ; c++) {
689+ for (int c = 0 ; c < NMchChambers ; c++) {
686690 nDE += getNumDEinChamber (c);
687691 }
688692 }
@@ -937,7 +941,7 @@ struct muonGlobalAlignment {
937941 auto itNextToNextParam = (itNextParam == track.end ()) ? itNextParam : std::next (itNextParam);
938942 itStartingParam = track.rbegin ();
939943
940- if (track.getNClusters () < 10 ) {
944+ if (track.getNClusters () < NMchChambers ) {
941945 removeTrack = true ;
942946 break ;
943947 } else {
@@ -1000,10 +1004,10 @@ struct muonGlobalAlignment {
10001004 double p = mchTrackAtVertex.getP ();
10011005
10021006 double pDCA = mchTrack.pDca ();
1003- double sigmaPDCA = (thetaAbs < 3 ) ? sigmaPDCA23 : sigmaPDCA310;
1007+ double sigmaPDCA = (thetaAbs < ThetaAbsBoundaryDeg ) ? sigmaPDCA23 : sigmaPDCA310;
10041008 double nrp = nSigmaPDCA * relPRes * p;
10051009 double pResEffect = sigmaPDCA / (1 . - nrp / (1 . + nrp));
1006- double slopeResEffect = 535 . * slopeRes * p;
1010+ double slopeResEffect = SlopeResolutionZ * slopeRes * p;
10071011 double sigmaPDCAWithRes = TMath::Sqrt (pResEffect * pResEffect + slopeResEffect * slopeResEffect);
10081012 if (pDCA > nSigmaPDCA * sigmaPDCAWithRes) {
10091013 return false ;
@@ -1021,7 +1025,7 @@ struct muonGlobalAlignment {
10211025 std::array<double , 2 > rAbsCut,
10221026 double nSigmaPdcaCut)
10231027 {
1024- auto const & mchTrack = (static_cast <int >(muonTrack.trackType ()) <= 2 ) ? muonTrack.template matchMCHTrack_as <MyMuonsWithCov>() : muonTrack;
1028+ auto const & mchTrack = (static_cast <int >(muonTrack.trackType ()) <= GlobalTrackTypeMax ) ? muonTrack.template matchMCHTrack_as <MyMuonsWithCov>() : muonTrack;
10251029
10261030 // chi2 cut
10271031 if (mchTrack.chi2 () > chi2Cut)
@@ -1252,7 +1256,7 @@ struct muonGlobalAlignment {
12521256 template <class TMFT >
12531257 o2::dataformats::GlobalFwdTrack PropagateMFT (const TMFT & mftTrack, float z)
12541258 {
1255- static double Bz = -10001 ;
1259+ // static double Bz = -10001;
12561260 double chi2 = mftTrack.chi2 ();
12571261 SMatrix5 tpars = {mftTrack.x (), mftTrack.y (), mftTrack.phi (), mftTrack.tgl (), mftTrack.signed1Pt ()};
12581262 std::vector<double > v1{0 , 0 , 0 , 0 , 0 ,
@@ -1270,12 +1274,12 @@ struct muonGlobalAlignment {
12701274 // double centerZ[3] = {mftTrack.x() + propVec[0] / 2.,
12711275 // mftTrack.y() + propVec[1] / 2.,
12721276 // mftTrack.z() + propVec[2] / 2.};
1273- if (Bz < -10000 ) {
1274- double centerZ[3 ] = {0 , 0 , (-45 .f - 77 .5f ) / 2 .f };
1275- o2::field::MagneticField* field = static_cast <o2::field::MagneticField*>(TGeoGlobalMagField::Instance ()->GetField ());
1276- Bz = field->getBz (centerZ);
1277- }
1278- fwdtrack.propagateToZ (z, Bz );
1277+ // if (Bz < -10000) {
1278+ // double centerZ[3] = {0, 0, (-45.f - 77.5f) / 2.f};
1279+ // o2::field::MagneticField* field = static_cast<o2::field::MagneticField*>(TGeoGlobalMagField::Instance()->GetField());
1280+ // Bz = field->getBz(centerZ);
1281+ // }
1282+ fwdtrack.propagateToZ (z, mBzAtMftCenter );
12791283
12801284 propmuon.setParameters (fwdtrack.getParameters ());
12811285 propmuon.setZ (fwdtrack.getZ ());
0 commit comments