- Timestamp:
- Oct 1, 2015, 3:32:32 PM (9 years ago)
- Branches:
- ImprovedOutputFile, Timing, dual_readout, llp, master
- Children:
- c62695e
- Parents:
- 122e1e5 (diff), fa7f333 (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. - Location:
- modules
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
modules/Calorimeter.cc
r122e1e5 r914fb04 426 426 Double_t ecalEnergy, hcalEnergy; 427 427 Double_t ecalSigma, hcalSigma; 428 Double_t ecalTrkSigma, hcalTrkSigma; 429 Double_t ecalFraction, hcalFraction; 430 431 Int_t pdgCode; 432 TLorentzVector momentum; 433 TFractionMap::iterator itFractionMap; 434 428 435 Float_t weight, sumWeightedTime, sumWeight; 429 436 430 437 if(!fTower) return; 431 438 439 432 440 ecalSigma = fECalResolutionFormula->Eval(0.0, fTowerEta, 0.0, fTowerECalEnergy); 433 441 hcalSigma = fHCalResolutionFormula->Eval(0.0, fTowerEta, 0.0, fTowerHCalEnergy); … … 501 509 // fill energy flow candidates 502 510 503 // save all the tracks as energy flow tracks 504 fItTowerTrackArray->Reset(); 505 while((track = static_cast<Candidate*>(fItTowerTrackArray->Next()))) 506 { 507 fEFlowTrackOutputArray->Add(track); 508 } 509 510 ecalEnergy -= fTrackECalEnergy; 511 hcalEnergy -= fTrackHCalEnergy; 511 // save as eflowtracks only tracks that have better resolution than calo 512 513 fItTowerTrackArray->Reset(); 514 while((track = static_cast<Candidate*>(fItTowerTrackArray->Next()))) 515 { 516 momentum = track->Momentum; 517 518 pdgCode = TMath::Abs(track->PID); 519 520 itFractionMap = fFractionMap.find(pdgCode); 521 if(itFractionMap == fFractionMap.end()) 522 { 523 itFractionMap = fFractionMap.find(0); 524 } 525 526 ecalFraction = itFractionMap->second.first; 527 hcalFraction = itFractionMap->second.second; 528 529 // charged particle has to deposit either in ECAL or HCAL 530 531 if(ecalFraction < 1.0E-9 && hcalFraction < 1.0E-9) continue; 532 if(ecalFraction > 1.0E-9 && hcalFraction > 1.0E-9) continue; 533 534 if(ecalFraction > 1.0E-9) 535 { 536 if(track->TrackResolution < ecalTrkSigma/momentum.E()) 537 { 538 ecalTrkSigma = fECalResolutionFormula->Eval(0.0, fTowerEta, 0.0, momentum.E()); 539 ecalEnergy -= momentum.E(); 540 fEFlowTrackOutputArray->Add(track); 541 } 542 543 } 544 545 if(hcalFraction > 1.0E-9) 546 { 547 if(track->TrackResolution < hcalTrkSigma/momentum.E()) 548 { 549 hcalTrkSigma = fHCalResolutionFormula->Eval(0.0, fTowerEta, 0.0, momentum.E()); 550 hcalEnergy -= momentum.E(); 551 fEFlowTrackOutputArray->Add(track); 552 } 553 } 554 } 512 555 513 556 ecalSigma = fECalResolutionFormula->Eval(0.0, fTowerEta, 0.0, ecalEnergy); -
modules/EnergySmearing.cc
r122e1e5 r914fb04 119 119 phi = candidateMomentum.Phi(); 120 120 candidate->Momentum.SetPtEtaPhiE(energy/TMath::CosH(eta), eta, phi, energy); 121 candidate->TrackResolution = fFormula->Eval(pt, eta, phi, energy)/energy; 121 122 candidate->AddCandidate(mother); 122 123 -
modules/MomentumSmearing.cc
r122e1e5 r914fb04 118 118 phi = candidateMomentum.Phi(); 119 119 candidate->Momentum.SetPtEtaPhiE(pt, eta, phi, pt*TMath::CosH(eta)); 120 candidate->TrackResolution = fFormula->Eval(pt, eta, phi, e); 120 121 candidate->AddCandidate(mother); 121 122 -
modules/SimpleCalorimeter.cc
r122e1e5 r914fb04 168 168 // create output arrays 169 169 fTowerOutputArray = ExportArray(GetString("TowerOutputArray", "towers")); 170 171 fEFlowTrackOutputArray = ExportArray(GetString("EFlowTrackOutputArray", "eflowTracks")); 170 172 fEFlowTowerOutputArray = ExportArray(GetString("EFlowTowerOutputArray", "eflowTowers")); 171 173 } … … 395 397 void SimpleCalorimeter::FinalizeTower() 396 398 { 397 Candidate *tower ;399 Candidate *tower, *track; 398 400 Double_t energy, pt, eta, phi; 399 401 Double_t sigma; 400 402 Double_t time; 401 403 404 Double_t trkSigma, fraction; 405 406 Int_t pdgCode; 407 TLorentzVector momentum; 408 TFractionMap::iterator itFractionMap; 409 402 410 if(!fTower) return; 403 411 … … 439 447 if(energy > 0.0) fTowerOutputArray->Add(fTower); 440 448 441 // fill energy flow candidates 442 energy -= fTrackEnergy; 449 450 451 // fill e-flow candidates 452 fItTowerTrackArray->Reset(); 453 while((track = static_cast<Candidate*>(fItTowerTrackArray->Next()))) 454 { 455 momentum = track->Momentum; 456 457 pdgCode = TMath::Abs(track->PID); 458 459 itFractionMap = fFractionMap.find(pdgCode); 460 if(itFractionMap == fFractionMap.end()) 461 { 462 itFractionMap = fFractionMap.find(0); 463 } 464 465 fraction = itFractionMap->second; 466 467 // charged particle has to deposit either in ECAL or HCAL 468 if(fraction < 1.0E-9) continue; 469 470 trkSigma = fResolutionFormula->Eval(0.0, fTowerEta, 0.0, momentum.E()); 471 472 if(track->TrackResolution < trkSigma/momentum.E()) 473 { 474 energy -= momentum.E(); 475 fEFlowTrackOutputArray->Add(track); 476 } 477 478 } 479 443 480 444 481 sigma = fResolutionFormula->Eval(0.0, fTowerEta, 0.0, energy); 445 446 482 if(energy < fEnergyMin || energy < fEnergySignificanceMin*sigma) energy = 0.0; 447 483 -
modules/SimpleCalorimeter.h
r122e1e5 r914fb04 99 99 TObjArray *fTowerOutputArray; //! 100 100 101 TObjArray *fEFlowTrackOutputArray; //! 101 102 TObjArray *fEFlowTowerOutputArray; //! 102 103 103 104 TObjArray *fTowerTrackArray; //! 104 105 TIterator *fItTowerTrackArray; //!
Note:
See TracChangeset
for help on using the changeset viewer.