Changes in / [93bf9c6:b982244] in git
- Files:
-
- 4 deleted
- 7 edited
Legend:
- Unmodified
- Added
- Removed
-
cards/FCC/FCChh_PileUpVtx.tcl
r93bf9c6 rb982244 17 17 set ExecutionPath { 18 18 19 BeamSpotFilter 19 20 PileUpMerger 20 21 ParticlePropagator … … 34 35 35 36 TrackSmearing 36 TimeSmearing 37 TimeSmearing 38 39 VertexFinderDA4D 40 41 TrackTimingPileUpSubtractor 37 42 38 43 ECal … … 42 47 EFlowMerger 43 48 EFlowFilter 44 45 TimeSmearingMIP46 TimeSmearingPhotons47 TimeSmearingNH48 49 VertexFinderDA4D50 TrackTimingPileUpSubtractor51 52 HighMassVertexRecover53 49 54 50 PhotonEfficiency … … 85 81 86 82 TreeWriter 83 } 84 85 ####################### 86 # GenBeamSpotFilter 87 # Saves a particle intended to represent the beamspot 88 ####################### 89 90 module BeamSpotFilter BeamSpotFilter { 91 set InputArray Delphes/stableParticles 92 set OutputArray beamSpotParticle 93 87 94 } 88 95 … … 294 301 295 302 # assume 20 ps resolution for now 296 set TimeResolution {20E-12} 303 set TimeResolution 20E-12 304 } 305 306 ################################## 307 # Primary vertex reconstruction 308 ################################## 309 310 311 module VertexFinderDA4D VertexFinderDA4D { 312 set InputArray TimeSmearing/tracks 313 314 set OutputArray tracks 315 set VertexOutputArray vertices 316 317 set Verbose 0 318 set MinPT 1.0 319 320 # in mm 321 set VertexSpaceSize 0.5 322 323 # in s 324 set VertexTimeSize 10E-12 325 326 set UseTc 1 327 set BetaMax 0.1 328 set BetaStop 1.0 329 set CoolingFactor 0.8 330 set MaxIterations 100 331 332 # in mm 333 set DzCutOff 40 334 set D0CutOff 30 335 336 } 337 338 ########################## 339 # Track pile-up subtractor 340 ########################## 341 342 module TrackTimingPileUpSubtractor TrackTimingPileUpSubtractor { 343 # add InputArray InputArray OutputArray 344 345 add InputArray ChargedHadronMomentumSmearing/chargedHadrons 346 add InputArray ElectronMomentumSmearing/electrons 347 add InputArray MuonMomentumSmearing/muons 348 349 set VertexInputArray VertexFinderDA4D/vertices 350 # assume perfect pile-up subtraction for tracks with |z| > fZVertexResolution 351 # Z vertex resolution in m 352 set ZVertexResolution {0.0001} 297 353 } 298 354 … … 463 519 } 464 520 521 465 522 ################# 466 523 # Electron filter … … 529 586 } 530 587 531 ########################################532 # Time Smearing Neutral MIP533 ########################################534 535 module TimeSmearing TimeSmearingMIP {536 set InputArray HCal/eflowTracks537 set OutputArray timeSmearingMIP538 539 # assume 30 ps resolution for now540 set TimeResolution {30E-12}541 }542 543 ########################################544 # Time Smearing Neutral Photons545 ########################################546 547 module TimeSmearing TimeSmearingPhotons {548 set InputArray ECal/eflowPhotons549 set OutputArray timeSmearingPhotons550 }551 552 ########################################553 # Time Smearing Neutral NeutralHadrons554 ########################################555 #556 module TimeSmearing TimeSmearingNH {557 set InputArray HCal/eflowNeutralHadrons558 set OutputArray timeSmearingNH559 560 # assume 30 ps resolution for now561 set TimeResolution {30E-12}562 }563 564 565 ##################################566 # Primary vertex reconstruction567 ##################################568 569 570 module VertexFinderDA4D VertexFinderDA4D {571 set InputArray TimeSmearing/tracks572 573 set OutputArray tracks574 set VertexOutputArray vertices575 576 set Verbose 0577 set MinPT 1.0578 579 # in mm580 set VertexSpaceSize 0.5581 582 # in s583 set VertexTimeSize 10E-12584 585 set UseTc 1586 set BetaMax 0.1587 set BetaStop 1.0588 set CoolingFactor 0.8589 set MaxIterations 100590 591 # in mm592 set DzCutOff 40593 set D0CutOff 30594 595 }596 597 ##########################598 # Track pile-up subtractor599 ##########################600 601 module TrackTimingPileUpSubtractor TrackTimingPileUpSubtractor {602 # add InputArray InputArray OutputArray603 604 add InputArray TimeSmearing/tracks605 add InputArray TimeSmearingPhotons/timeSmearingPhotons606 add InputArray TimeSmearingNH/timeSmearingNH607 608 set VertexInputArray VertexFinderDA4D/vertices609 610 set fChargedMinSignificance {3}611 set fNeutralMinSignificance {3}612 }613 614 ######################################615 # Heavy(slow) particles vertex recover616 ######################################617 618 module HighMassVertexRecover HighMassVertexRecover {619 set TrackInputArray VertexFinderDA4D/tracks620 set VertexInputArray VertexFinderDA4D/vertices621 622 set TrackOutputArray tracks623 set VertexOutputArray vertices624 625 set Verbose 0626 627 }628 588 629 589 ################### … … 1077 1037 add Branch ScalarHT/energy ScalarHT ScalarHT 1078 1038 add Branch VertexFinderDA4D/vertices Vertex4D Vertex 1079 1080 add Branch HighMassVertexRecover/tracks Track Track 1081 } 1082 1039 } 1040 -
modules/ModulesLinkDef.h
r93bf9c6 rb982244 56 56 #include "modules/PileUpMerger.h" 57 57 #include "modules/JetPileUpSubtractor.h" 58 #include "modules/TrackPileUpSubtractor.h" 58 59 #include "modules/TrackTimingPileUpSubtractor.h" 59 60 #include "modules/TaggingParticlesSkimmer.h" … … 113 114 #pragma link C++ class PileUpMerger+; 114 115 #pragma link C++ class JetPileUpSubtractor+; 116 #pragma link C++ class TrackPileUpSubtractor+; 115 117 #pragma link C++ class TrackTimingPileUpSubtractor+; 116 118 #pragma link C++ class TaggingParticlesSkimmer+; -
modules/TimeSmearing.cc
r93bf9c6 rb982244 53 53 54 54 TimeSmearing::TimeSmearing() : 55 f ItInputArray(0)55 fFormula(0), fItInputArray(0) 56 56 { 57 fFormula = new DelphesFormula; 57 58 } 58 59 … … 60 61 61 62 TimeSmearing::~TimeSmearing() 62 { 63 { 64 if(fFormula) delete fFormula; 63 65 } 64 66 … … 69 71 // read resolution formula 70 72 71 f TimeResolution = GetDouble("TimeResolution", 1.);73 fFormula->Compile(GetString("TimeResolution", "1.0")); 72 74 73 75 // import input array … … 75 77 fInputArray = ImportArray(GetString("InputArray", "MuonMomentumSmearing/muons")); 76 78 fItInputArray = fInputArray->MakeIterator(); 79 77 80 // create output array 78 81 … … 92 95 { 93 96 Candidate *candidate, *mother; 94 Double_t ti, tf_smeared, tf; 95 Double_t pt, eta, phi, e, p, l; 96 Double_t sigma_t, beta_particle; 97 Double_t ti, tf_smeared, tf, timeResolution; 98 Double_t pt, eta, phi, e, d0, dz, ctgTheta; 97 99 98 100 99 101 const Double_t c_light = 2.99792458E8; 100 101 cout << " STARTINNNGG ---------->" << endl;102 102 103 103 fItInputArray->Reset(); … … 114 114 pt = candidateMomentum.Pt(); 115 115 e = candidateMomentum.E(); 116 p = candidateMomentum.P(); 117 beta_particle = p/e; 118 l = candidate->L; 116 d0 = candidate->D0; 117 dz = candidate->DZ; 118 ctgTheta = candidate->CtgTheta; 119 119 120 // apply smearing formula 121 122 timeResolution = fFormula->Eval(pt, eta, phi, e, d0, dz, ctgTheta); 123 if(fabs(candidate->Position.Eta())<fEtaMax) 124 { 125 tf_smeared = tf + timeResolution*gRandom->Gaus(0, 1); 126 } 127 else continue; 120 128 121 if(candidate->Charge != 0) 122 { 123 tf_smeared = tf + fTimeResolution*gRandom->Gaus(0, 1); 124 //mother = candidate; 125 //candidate = static_cast<Candidate*>(candidate->Clone()); // I am not sure that we need these lines !!! 126 //candidate->AddCandidate(mother); 127 candidate->InitialPosition.SetT((100+ti)*1.0E3*c_light); 128 candidate->Position.SetT(tf_smeared*1.0E3*c_light); 129 candidate->ErrorT = fTimeResolution*1.0E3*c_light; 130 fOutputArray->Add(candidate); 131 } 132 else 133 { 134 sigma_t = sqrt(pow(20,2) + pow(150,2)/e); 135 ti = sigma_t - l*1.0E3/(c_light*beta_particle); 136 candidate->InitialPosition.SetT(ti); 137 candidate->ErrorT = sigma_t*1.0E3*c_light; // Do we need to sum with 100 like in upside ? 138 fOutputArray->Add(candidate); 139 } 140 129 // double beta_particle = candidate->Momentum.P()/candidate->Momentum.E(); 130 // ti = tf_smeared - candidate->Ld*1.0E-3/(c_light*beta_particle); 131 132 mother = candidate; 133 candidate = static_cast<Candidate*>(candidate->Clone()); 134 candidate->AddCandidate(mother); 135 candidate->InitialPosition.SetT((100+ti)*1.0E3*c_light); 136 candidate->Position.SetT(tf_smeared*1.0E3*c_light); 137 candidate->ErrorT = timeResolution*1.0E3*c_light; 138 139 fOutputArray->Add(candidate); 141 140 } 142 141 } -
modules/TimeSmearing.h
r93bf9c6 rb982244 45 45 46 46 private: 47 D ouble_t fTimeResolution; //!47 DelphesFormula *fFormula; //! 48 48 Double_t fEtaMax; 49 49 -
modules/TrackTimingPileUpSubtractor.cc
r93bf9c6 rb982244 75 75 76 76 // read resolution formula in m 77 fChargedMinSignificance = GetDouble("ChargedMinSignificance", 3); 78 fNeutralMinSignificance = GetDouble("NeutralMinSignificance", 3); 77 fFormula->Compile(GetString("ZVertexResolution", "0.001")); 79 78 80 79 fPTMin = GetDouble("PTMin", 0.); … … 129 128 Double_t tempPTSquare = 0; 130 129 Double_t pt, eta, phi, e; 131 Double_t distance Charged, distanceNeutral= 0;130 Double_t distance = 0; 132 131 133 132 // find z position of primary vertex … … 144 143 tvtx = candidate->Position.T(); 145 144 tvtx_err = candidate->PositionError.T(); 145 cout << " initial : " << candidate->InitialPosition.T() << " final : " << candidate->Position.T() << endl; 146 146 } 147 147 } … … 167 167 z = particle->Position.Z(); 168 168 z_err = particle->PositionError.Z(); 169 t = particle-> InitialPosition.T();169 t = particle->Position.T(); 170 170 t_err = particle->PositionError.T(); 171 171 172 distanceCharged = pow((zvtx - z),2)/pow((zvtx_err - z_err),2) + pow((tvtx - t),2)/pow((tvtx_err - t_err),2); 173 distanceNeutral = pow((tvtx - t),2)/pow((tvtx_err - t_err),2); 172 // apply pile-up subtraction 173 distance = pow((zvtx - z),2)/pow((zvtx_err - z_err),2) + pow((tvtx - t),2)/pow((tvtx_err - t_err),2); 174 //cout << " t : " << tvtx << " t(particle)" << t << endl; 175 // here I calculated distance using Z and T of selected vertex (highest sum Pt square) and particles 176 // however z_err of vertices is gives 0 because of using CMS trackResolutionCMS.tcl (in that formula, there is limitation on |eta| < 2.5) 177 // thats why I used TMath::Abs(z - zvtx) < 0.005 && TMath::Abs(t - tvtx) < 5.0 174 178 175 if(candidate->Charge != 0 && distanceCharged < fChargedMinSignificance)179 if(candidate->Charge != 0 && TMath::Abs(z - zvtx) < 0.005 && TMath::Abs(t - tvtx) < 5.0) 176 180 { 177 181 candidate->IsRecoPU = 1; 178 182 } 179 else if(candidate->Charge == 0 && distanceNeutral < fNeutralMinSignificance)180 {181 candidate->IsRecoPU = 1;182 }183 183 else 184 184 { -
modules/TrackTimingPileUpSubtractor.h
r93bf9c6 rb982244 49 49 DelphesFormula *fFormula; //! 50 50 51 Double_t fChargedMinSignificance;52 Double_t fNeutralMinSignificance;53 54 51 Double_t fPTMin; 55 52 -
modules/VertexFinderDA4D.cc
r93bf9c6 rb982244 425 425 candidate->ClusterIndex = k; 426 426 candidate->Position.SetXYZT(0.0, 0.0, vtx.z[k] , vtx.t[k]*1E-9*c_light); 427 candidate->InitialPosition.SetXYZT(0.0, 0.0, vtx.z[k] , vtx.t[k]*1E-9*c_light);428 427 candidate->PositionError.SetXYZT(0.0, 0.0, fVertexZSize , fVertexTSize*1E-9*c_light); 429 428 candidate->SumPT2 = 0;
Note:
See TracChangeset
for help on using the changeset viewer.