Changeset 667a02a in git for modules/ParticlePropagator.cc
- Timestamp:
- Jun 8, 2018, 3:23:13 PM (7 years ago)
- Branches:
- ImprovedOutputFile, Timing, dual_readout, llp, master
- Children:
- e57c062
- Parents:
- 001ee95 (diff), 17d0ab8 (diff)
Note: this is a merge changeset, the changes displayed below correspond to the merge itself.
Use the(diff)
links above to see all the changes relative to each parent. - File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
modules/ParticlePropagator.cc
r001ee95 r667a02a 124 124 void ParticlePropagator::Process() 125 125 { 126 Candidate *candidate, *mother ;127 TLorentzVector candidatePosition, candidateMomentum, beamSpotPosition;126 Candidate *candidate, *mother, *particle; 127 TLorentzVector particlePosition, particleMomentum, beamSpotPosition; 128 128 Double_t px, py, pz, pt, pt2, e, q; 129 129 Double_t x, y, z, t, r, phi; … … 151 151 while((candidate = static_cast<Candidate*>(fItInputArray->Next()))) 152 152 { 153 candidatePosition = candidate->Position; 154 candidateMomentum = candidate->Momentum; 155 x = candidatePosition.X()*1.0E-3; 156 y = candidatePosition.Y()*1.0E-3; 157 z = candidatePosition.Z()*1.0E-3; 153 if(candidate->GetCandidates()->GetEntriesFast() == 0) 154 { 155 particle = candidate; 156 } 157 else 158 { 159 particle = static_cast<Candidate*>(candidate->GetCandidates()->At(0)); 160 } 161 162 particlePosition = particle->Position; 163 particleMomentum = particle->Momentum; 164 x = particlePosition.X()*1.0E-3; 165 y = particlePosition.Y()*1.0E-3; 166 z = particlePosition.Z()*1.0E-3; 158 167 159 168 bsx = beamSpotPosition.X()*1.0E-3; … … 161 170 bsz = beamSpotPosition.Z()*1.0E-3; 162 171 163 q = candidate->Charge;172 q = particle->Charge; 164 173 165 174 // check that particle position is inside the cylinder … … 169 178 } 170 179 171 px = candidateMomentum.Px();172 py = candidateMomentum.Py();173 pz = candidateMomentum.Pz();174 pt = candidateMomentum.Pt();175 pt2 = candidateMomentum.Perp2();176 e = candidateMomentum.E();180 px = particleMomentum.Px(); 181 py = particleMomentum.Py(); 182 pz = particleMomentum.Pz(); 183 pt = particleMomentum.Pt(); 184 pt2 = particleMomentum.Perp2(); 185 e = particleMomentum.E(); 177 186 178 187 if(pt2 < 1.0E-9) … … 186 195 candidate = static_cast<Candidate*>(candidate->Clone()); 187 196 188 candidate->InitialPosition = candidatePosition;189 candidate->Position = candidatePosition;197 candidate->InitialPosition = particlePosition; 198 candidate->Position = particlePosition; 190 199 candidate->L = 0.0; 191 200 192 candidate->Momentum = candidateMomentum;201 candidate->Momentum = particleMomentum; 193 202 candidate->AddCandidate(mother); 194 203 … … 230 239 candidate = static_cast<Candidate*>(candidate->Clone()); 231 240 232 candidate->InitialPosition = candidatePosition;233 candidate->Position.SetXYZT(x_t*1.0E3, y_t*1.0E3, z_t*1.0E3, candidatePosition.T() + t*e*1.0E3);241 candidate->InitialPosition = particlePosition; 242 candidate->Position.SetXYZT(x_t*1.0E3, y_t*1.0E3, z_t*1.0E3, particlePosition.T() + t*e*1.0E3); 234 243 candidate->L = l*1.0E3; 235 244 236 candidate->Momentum = candidateMomentum;245 candidate->Momentum = particleMomentum; 237 246 candidate->AddCandidate(mother); 238 247 … … 295 304 px = TMath::Sign(1.0, r) * pt * (-y_c / r_c); 296 305 py = TMath::Sign(1.0, r) * pt * (x_c / r_c); 297 etap = candidateMomentum.Eta();306 etap = particleMomentum.Eta(); 298 307 phip = TMath::ATan2(py, px); 299 308 300 candidateMomentum.SetPtEtaPhiE(pt, etap, phip, candidateMomentum.E());309 particleMomentum.SetPtEtaPhiE(pt, etap, phip, particleMomentum.E()); 301 310 302 311 // calculate additional track parameters (correct for beamspot position) … … 304 313 d0 = ((x - bsx) * py - (y - bsy) * px) / pt; 305 314 dz = z - ((x - bsx) * px + (y - bsy) * py) / pt * (pz / pt); 306 p = candidateMomentum.P();307 ctgTheta = 1.0 / TMath::Tan ( candidateMomentum.Theta());315 p = particleMomentum.P(); 316 ctgTheta = 1.0 / TMath::Tan (particleMomentum.Theta()); 308 317 309 318 … … 363 372 364 373 // store these variables before cloning 365 candidate->D0 = d0*1.0E3; 366 candidate->DZ = dz*1.0E3; 367 candidate->P = p; 368 candidate->PT = pt; 369 candidate->CtgTheta = ctgTheta; 370 candidate->Phi = phip; 374 if(particle == candidate) 375 { 376 particle->D0 = d0*1.0E3; 377 particle->DZ = dz*1.0E3; 378 particle->P = p; 379 particle->PT = pt; 380 particle->CtgTheta = ctgTheta; 381 particle->Phi = phip; 382 } 371 383 372 384 mother = candidate; 373 385 candidate = static_cast<Candidate*>(candidate->Clone()); 374 386 375 candidate->InitialPosition = candidatePosition;376 candidate->Position.SetXYZT(x_t*1.0E3, y_t*1.0E3, z_t*1.0E3, candidatePosition.T() + t*c_light*1.0E3);377 378 candidate->Momentum = candidateMomentum;387 candidate->InitialPosition = particlePosition; 388 candidate->Position.SetXYZT(x_t*1.0E3, y_t*1.0E3, z_t*1.0E3, particlePosition.T() + t*c_light*1.0E3); 389 390 candidate->Momentum = particleMomentum; 379 391 380 392 candidate->L = l*1.0E3;
Note:
See TracChangeset
for help on using the changeset viewer.