- Timestamp:
- Jun 6, 2018, 11:54:55 AM (7 years ago)
- Branches:
- ImprovedOutputFile, Timing, dual_readout, llp, master
- Children:
- 5b51d33
- Parents:
- 748ce07
- Location:
- modules
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
modules/DenseTrackFilter.cc
r748ce07 r60e1de6 204 204 // switch to next tower 205 205 towerEtaPhi = hitEtaPhi; 206 206 207 207 // saving track with highest pT that hit the tower 208 208 FillTrack(); … … 213 213 } 214 214 // check for track hits 215 215 216 216 if(flags & 1) 217 217 { … … 220 220 momentum = track->Momentum; 221 221 222 if (momentum.Pt() > ptmax)222 if(momentum.Pt() > ptmax) 223 223 { 224 224 ptmax = momentum.Pt(); 225 225 fBestTrack = track; 226 226 } 227 227 continue; 228 228 } 229 230 } 231 229 230 } 231 232 232 // here fill last tower 233 233 FillTrack(); 234 235 } 236 237 234 235 } 238 236 239 237 //------------------------------------------------------------------------------ … … 241 239 void DenseTrackFilter::FillTrack() 242 240 { 243 244 Candidate *candidate, *track , *mother, *trackRef, *bestTrackRef;241 242 Candidate *candidate, *track; 245 243 Double_t pt, eta, phi; 246 Bool_t matched; 247 244 Int_t numberOfCandidates; 245 246 numberOfCandidates = fBestTrack->GetCandidates()->GetEntriesFast(); 247 248 248 // saving track with highest pT that hit the tower 249 if(fTowerTrackHits > 0) 250 { 251 bestTrackRef = static_cast<Candidate*>(fBestTrack->GetCandidates()->At(0)); 252 253 // find corresponding track in properly propagated tracks 254 fItTrackInputArray->Reset(); 255 matched = kFALSE; 256 int ntrack = 0; 257 while((track = static_cast<Candidate*>(fItTrackInputArray->Next()))) 258 { 259 ntrack++; 260 trackRef = static_cast<Candidate*>(track->GetCandidates()->At(0)); 261 262 if (trackRef->GetUniqueID() == bestTrackRef->GetUniqueID()) 263 { 264 mother = track; 265 candidate = static_cast<Candidate*>(track->Clone()); 266 pt = candidate->Momentum.Pt(); 267 eta = candidate->Momentum.Eta(); 268 phi = candidate->Momentum.Phi(); 269 eta = gRandom->Gaus(eta, fEtaPhiRes); 270 phi = gRandom->Gaus(phi, fEtaPhiRes); 271 candidate->Momentum.SetPtEtaPhiE(pt, eta, phi, pt*TMath::CosH(eta)); 272 candidate->AddCandidate(mother); 273 fTrackOutputArray->Add(candidate); 274 matched = kTRUE; 275 } 276 if (matched) break; 277 } 278 } 279 280 281 } 249 if(fTowerTrackHits > 0 && numberOfCandidates > 1) 250 { 251 track = static_cast<Candidate*>(fBestTrack->GetCandidates()->At(numberOfCandidates - 2)); 252 candidate = static_cast<Candidate*>(track->Clone()); 253 pt = candidate->Momentum.Pt(); 254 eta = candidate->Momentum.Eta(); 255 phi = candidate->Momentum.Phi(); 256 eta = gRandom->Gaus(eta, fEtaPhiRes); 257 phi = gRandom->Gaus(phi, fEtaPhiRes); 258 candidate->Momentum.SetPtEtaPhiE(pt, eta, phi, pt*TMath::CosH(eta)); 259 candidate->AddCandidate(track); 260 fTrackOutputArray->Add(candidate); 261 } 262 } -
modules/ParticlePropagator.cc
r748ce07 r60e1de6 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 particle->D0 = d0*1.0E3; 375 particle->DZ = dz*1.0E3; 376 particle->P = p; 377 particle->PT = pt; 378 particle->CtgTheta = ctgTheta; 379 particle->Phi = phip; 371 380 372 381 mother = candidate; 373 382 candidate = static_cast<Candidate*>(candidate->Clone()); 374 383 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;384 candidate->InitialPosition = particlePosition; 385 candidate->Position.SetXYZT(x_t*1.0E3, y_t*1.0E3, z_t*1.0E3, particlePosition.T() + t*c_light*1.0E3); 386 387 candidate->Momentum = particleMomentum; 379 388 380 389 candidate->L = l*1.0E3;
Note:
See TracChangeset
for help on using the changeset viewer.