Changes in modules/TrackCovariance.cc [3051ea17:fd4b326] in git
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
modules/TrackCovariance.cc
r3051ea17 rfd4b326 1 /*1 /* 2 2 * Delphes: a framework for fast simulation of a generic collider experiment 3 3 * Copyright (C) 2020 Universite catholique de Louvain (UCLouvain), Belgium … … 21 21 * Smears track parameters according to appropriate covariance matrix. 22 22 * 23 * \authors P. Demin - UCLouvain, Louvain-la-Neuve 23 * \authors F. Bedeschi - INFN Pisa 24 * P. Demin - UCLouvain, Louvain-la-Neuve 24 25 * M. Selvaggi - CERN 26 * 25 27 * 26 28 */ … … 50 52 51 53 TrackCovariance::TrackCovariance() : 52 fGeometry(0), fCovariance(0), f ItInputArray(0)54 fGeometry(0), fCovariance(0), fAcx(0), fItInputArray(0) 53 55 { 54 56 fGeometry = new SolGeom(); … … 70 72 fBz = GetDouble("Bz", 0.0); 71 73 fGeometry->Read(GetString("DetectorGeometry", "")); 74 fNMinHits = GetInt("NMinHits", 6); 72 75 76 // load geometry 73 77 fCovariance->Calc(fGeometry); 78 fCovariance->SetMinHits(fNMinHits); 79 // load geometry 80 fAcx = fCovariance->AccPnt(); 74 81 75 82 // import input array 76 77 83 fInputArray = ImportArray(GetString("InputArray", "TrackMerger/tracks")); 78 84 fItInputArray = fInputArray->MakeIterator(); … … 94 100 void TrackCovariance::Process() 95 101 { 96 Candidate *candidate, *mother ;102 Candidate *candidate, *mother, *particle; 97 103 Double_t mass, p, pt, q, ct; 98 104 Double_t dd0, ddz, dphi, dct, dp, dpt, dC; 99 105 100 106 101 107 fItInputArray->Reset(); 102 108 while((candidate = static_cast<Candidate *>(fItInputArray->Next()))) 103 109 { 104 const TLorentzVector &candidatePosition = candidate->InitialPosition; 105 const TLorentzVector &candidateMomentum = candidate->Momentum; 110 111 // converting to meters 112 particle = static_cast<Candidate *>(candidate->GetCandidates()->At(0)); 113 114 // converting to meters 115 const TLorentzVector &candidatePosition = particle->Position*1e-03; 116 const TLorentzVector &candidateMomentum = particle->Momentum; 117 118 if ( !fCovariance->IsAccepted(candidateMomentum.Vect()) ) continue; 106 119 107 120 mass = candidateMomentum.M(); … … 110 123 111 124 mother = candidate; 112 candidate = static_cast<Candidate 125 candidate = static_cast<Candidate*>(candidate->Clone()); 113 126 114 127 candidate->Momentum.SetVectM(track.GetObsP(), mass); 115 candidate->InitialPosition.SetXYZT(track.GetObsX().X(),track.GetObsX().Y(),track.GetObsX().Z(),candidatePosition.T()); 116 128 129 // converting back to mm 130 candidate->InitialPosition.SetXYZT(track.GetObsX().X()*1e03,track.GetObsX().Y()*1e03,track.GetObsX().Z()*1e03,candidatePosition.T()*1e03); 131 117 132 // save full covariance 5x5 matrix internally (D0, phi, Curvature, dz, ctg(theta)) 118 133 candidate->TrackCovariance = track.GetCov(); … … 123 138 ct = track.GetObsPar()[4]; 124 139 125 candidate->Xd = track.GetObsX().X(); 126 candidate->Yd = track.GetObsX().Y(); 127 candidate->Zd = track.GetObsX().Z(); 128 129 candidate->D0 = track.GetObsPar()[0]; 130 candidate->Phi = track.GetObsPar()[1]; 131 candidate->C = track.GetObsPar()[2]; 132 candidate->DZ = track.GetObsPar()[3]; 140 candidate->Xd = track.GetObsX().X()*1e03; 141 candidate->Yd = track.GetObsX().Y()*1e03; 142 candidate->Zd = track.GetObsX().Z()*1e03; 143 144 candidate->D0 = track.GetObsPar()[0]*1e03; 145 candidate->Phi = track.GetObsPar()[1]; 146 147 // inverse of curvature 148 candidate->C = track.GetObsPar()[2]*1e-03; 149 candidate->DZ = track.GetObsPar()[3]*1e03; 133 150 candidate->CtgTheta = track.GetObsPar()[4]; 134 candidate->P = track.GetObsP().Mag();135 candidate->PT = pt;136 candidate->Charge = q;151 candidate->P = track.GetObsP().Mag(); 152 candidate->PT = pt; 153 candidate->Charge = q; 137 154 138 dd0 = TMath::Sqrt(track.GetCov()(0, 0)) ;139 ddz = TMath::Sqrt(track.GetCov()(3, 3)) ;140 dphi = TMath::Sqrt(track.GetCov()(1, 1)); 141 dct = TMath::Sqrt(track.GetCov()(4, 4)); 155 dd0 = TMath::Sqrt(track.GetCov()(0, 0))*1e03; 156 ddz = TMath::Sqrt(track.GetCov()(3, 3))*1e03; 157 dphi = TMath::Sqrt(track.GetCov()(1, 1)); 158 dct = TMath::Sqrt(track.GetCov()(4, 4)); 142 159 dpt = 2 * TMath::Sqrt( track.GetCov()(2, 2))*pt*pt / (0.2998*fBz); 143 160 dp = TMath::Sqrt((1.+ct*ct)*dpt*dpt + 4*pt*pt*ct*ct*dct*dct/(1.+ct*ct)/(1.+ct*ct)); 144 dC = TMath::Sqrt(track.GetCov()(2, 2)) ;161 dC = TMath::Sqrt(track.GetCov()(2, 2))*1e-03; 145 162 146 163 candidate->ErrorD0 = dd0; … … 154 171 candidate->TrackResolution = dp / p; 155 172 156 157 173 candidate->AddCandidate(mother); 158 174
Note:
See TracChangeset
for help on using the changeset viewer.