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