Fork me on GitHub

Changeset 22dc7fd in git for modules/PileUpMerger.cc


Ignore:
Timestamp:
Dec 21, 2013, 3:00:11 PM (11 years ago)
Author:
mselvaggi <mselvaggi@…>
Branches:
ImprovedOutputFile, Timing, dual_readout, llp, master
Children:
24d005f
Parents:
af88093
Message:

timing implemented

File:
1 edited

Legend:

Unmodified
Added
Removed
  • modules/PileUpMerger.cc

    raf88093 r22dc7fd  
    1616#include "classes/DelphesClasses.h"
    1717#include "classes/DelphesFactory.h"
    18 #include "classes/DelphesFormula.h"
     18#include "classes/DelphesTF2.h"
    1919#include "classes/DelphesPileUpReader.h"
    2020
     
    4141
    4242PileUpMerger::PileUpMerger() :
    43   fReader(0), fItInputArray(0)
    44 {
    45 }
     43  fFunction(0), fReader(0), fItInputArray(0)
     44{
     45  fFunction = new DelphesTF2;
     46}
     47
    4648
    4749//------------------------------------------------------------------------------
     
    4951PileUpMerger::~PileUpMerger()
    5052{
     53  delete fFunction;
    5154}
    5255
     
    6063
    6164  fMeanPileUp  = GetDouble("MeanPileUp", 10);
    62   fZVertexSpread = GetDouble("ZVertexSpread", 0.05)*1.0E3;
    63 
     65 
     66  fZVertexSpread = GetDouble("ZVertexSpread", 0.15);
     67  fTVertexSpread = GetDouble("TVertexSpread", 1.5E-09);
     68
     69  // read vertex smearing formula
     70       
     71  fFunction->Compile(GetString("VertexDistributionFormula", "0.0"));
     72  fFunction->SetRange(-fZVertexSpread,-fTVertexSpread,fZVertexSpread,fTVertexSpread);
     73 
    6474  fileName = GetString("PileUpFile", "MinBias.pileup");
    6575  fReader = new DelphesPileUpReader(fileName);
     
    90100  Float_t x, y, z, t;
    91101  Float_t px, py, pz, e;
    92   Double_t dz, dphi;
     102  Double_t dz, dphi, dt;
    93103  Int_t numberOfEvents, event;
    94104  Long64_t allEntries, entry;
    95   Candidate *candidate;
     105  Candidate *candidate, *vertexcandidate;
    96106  DelphesFactory *factory;
     107 
     108  const Double_t c_light = 2.99792458E8;
    97109
    98110  fItInputArray->Reset();
     111 
     112    // --- Deal with Primary vertex first  ------
     113 
     114  fFunction->GetRandom2(dz,dt);
     115 
     116  dt *= c_light*1.0E3; //necessary in order to make t in mm/c
     117  dz *= 1.0E3; //necessary in order to make z in mm
     118 
    99119  while((candidate = static_cast<Candidate*>(fItInputArray->Next())))
    100120  {
     121    candidate->Position.SetXYZT(x, y, z+dz, t+dt);
    101122    fParticleOutputArray->Add(candidate);
    102123  }
    103124
    104125  factory = GetFactory();
    105 
     126 
     127  vertexcandidate = factory->NewCandidate();
     128  vertexcandidate->Position.SetXYZT(0.0, 0.0, dz, dt);
     129  fVertexOutputArray->Add(vertexcandidate);
     130 
     131 
     132  // --- Then with pile-up vertices  ------
     133 
    106134  switch(fPileUpDistribution)
    107135  {
     
    118146
    119147  allEntries = fReader->GetEntries();
    120 
     148 
    121149  for(event = 0; event < numberOfEvents; ++event)
    122150  {
     
    128156
    129157    fReader->ReadEntry(entry);
    130 
    131     dz = gRandom->Gaus(0.0, fZVertexSpread);
     158 
     159   // --- Pile-up vertex smearing
     160   
     161    fFunction->GetRandom2(dz,dt);
     162 
     163    dt *= c_light*1.0E3; //necessary in order to make t in mm/c
     164    dz *= 1.0E3; //necessary in order to make z in mm
     165 
    132166    dphi = gRandom->Uniform(-TMath::Pi(), TMath::Pi());
    133167
    134     candidate = factory->NewCandidate();
    135     candidate->Position.SetXYZT(0.0, 0.0, dz, 0.0);
    136     fVertexOutputArray->Add(candidate);
     168    vertexcandidate = factory->NewCandidate();
     169    vertexcandidate->Position.SetXYZT(0.0, 0.0, dz, dt);
     170    vertexcandidate->IsPU = 1;
     171   
     172    fVertexOutputArray->Add(vertexcandidate);
    137173
    138174    while(fReader->ReadParticle(pid, x, y, z, t, px, py, pz, e))
     
    149185
    150186      candidate->IsPU = 1;
    151 
     187   
    152188      candidate->Momentum.SetPxPyPzE(px, py, pz, e);
    153189      candidate->Momentum.RotateZ(dphi);
    154190
    155       candidate->Position.SetXYZT(x, y, z + dz, t);
     191      candidate->Position.SetXYZT(x, y, z+dz, t+dt);
    156192      candidate->Position.RotateZ(dphi);
    157 
     193     
    158194      fParticleOutputArray->Add(candidate);
    159195    }
Note: See TracChangeset for help on using the changeset viewer.