Fork me on GitHub

Changes in / [db7f5e4:1f34dac] in git


Ignore:
Files:
7 added
10 edited

Legend:

Unmodified
Added
Removed
  • Makefile

    rdb7f5e4 r1f34dac  
    316316        modules/EnergySmearing.h \
    317317        modules/MomentumSmearing.h \
     318        modules/TrackSmearing.h \
    318319        modules/ImpactParameterSmearing.h \
    319320        modules/TimeSmearing.h \
     
    338339        modules/StatusPidFilter.h \
    339340        modules/PdgCodeFilter.h \
     341        modules/BeamSpotFilter.h \
    340342        modules/Cloner.h \
    341343        modules/Weighter.h \
     
    546548        classes/DelphesFactory.h \
    547549        classes/DelphesFormula.h
     550tmp/modules/BeamSpotFilter.$(ObjSuf): \
     551        modules/BeamSpotFilter.$(SrcSuf) \
     552        modules/BeamSpotFilter.h \
     553        classes/DelphesClasses.h \
     554        classes/DelphesFactory.h \
     555        classes/DelphesFormula.h \
     556        external/ExRootAnalysis/ExRootResult.h \
     557        external/ExRootAnalysis/ExRootFilter.h \
     558        external/ExRootAnalysis/ExRootClassifier.h
    548559tmp/modules/Calorimeter.$(ObjSuf): \
    549560        modules/Calorimeter.$(SrcSuf) \
     
    830841        modules/TrackPileUpSubtractor.$(SrcSuf) \
    831842        modules/TrackPileUpSubtractor.h \
     843        classes/DelphesClasses.h \
     844        classes/DelphesFactory.h \
     845        classes/DelphesFormula.h \
     846        external/ExRootAnalysis/ExRootResult.h \
     847        external/ExRootAnalysis/ExRootFilter.h \
     848        external/ExRootAnalysis/ExRootClassifier.h
     849tmp/modules/TrackSmearing.$(ObjSuf): \
     850        modules/TrackSmearing.$(SrcSuf) \
     851        modules/TrackSmearing.h \
    832852        classes/DelphesClasses.h \
    833853        classes/DelphesFactory.h \
     
    915935        tmp/modules/AngularSmearing.$(ObjSuf) \
    916936        tmp/modules/BTagging.$(ObjSuf) \
     937        tmp/modules/BeamSpotFilter.$(ObjSuf) \
    917938        tmp/modules/Calorimeter.$(ObjSuf) \
    918939        tmp/modules/Cloner.$(ObjSuf) \
     
    946967        tmp/modules/TrackCountingTauTagging.$(ObjSuf) \
    947968        tmp/modules/TrackPileUpSubtractor.$(ObjSuf) \
     969        tmp/modules/TrackSmearing.$(ObjSuf) \
    948970        tmp/modules/TreeWriter.$(ObjSuf) \
    949971        tmp/modules/UniqueObjectFinder.$(ObjSuf) \
     
    15451567        tmp/external/tcl/tclVar.$(ObjSuf)
    15461568
     1569modules/TrackSmearing.h: \
     1570        classes/DelphesModule.h
     1571        @touch $@
     1572
    15471573external/fastjet/ClusterSequence.hh: \
    15481574        external/fastjet/PseudoJet.hh \
     
    19772003
    19782004modules/FastJetFinder.h: \
     2005        classes/DelphesModule.h
     2006        @touch $@
     2007
     2008modules/BeamSpotFilter.h: \
    19792009        classes/DelphesModule.h
    19802010        @touch $@
  • classes/DelphesClasses.cc

    rdb7f5e4 r1f34dac  
    127127  Momentum(0.0, 0.0, 0.0, 0.0),
    128128  Position(0.0, 0.0, 0.0, 0.0),
     129  InitialPosition(0.0, 0.0, 0.0, 0.0),
    129130  Area(0.0, 0.0, 0.0, 0.0),
    130   Dxy(0), SDxy(0), Xd(0), Yd(0), Zd(0),
     131  L(0),
     132  D0(0), ErrorD0(0),
     133  DZ(0), ErrorDZ(0),
     134  P(0),  ErrorP(0),
     135  PT(0), ErrorPT(0),
     136  CtgTheta(0), ErrorCtgTheta(0),
     137  Phi(0), ErrorPhi(0), 
     138  Xd(0), Yd(0), Zd(0),
    131139  TrackResolution(0),
    132140  NCharged(0),
     
    262270  object.Momentum = Momentum;
    263271  object.Position = Position;
     272  object.InitialPosition = Position;
    264273  object.Area = Area;
    265   object.Dxy = Dxy;
    266   object.SDxy = SDxy;
     274  object.L = L;
     275  object.D0 = D0;
     276  object.ErrorD0 = ErrorD0;
     277  object.DZ = DZ;
     278  object.ErrorDZ = ErrorDZ;
     279  object.P = P;
     280  object.ErrorP = ErrorP;
     281  object.PT = PT;
     282  object.ErrorPT = ErrorPT;
     283  object.CtgTheta = CtgTheta ;
     284  object.ErrorCtgTheta = ErrorCtgTheta;
     285  object.Phi = Phi;
     286  object.ErrorPhi = ErrorPhi; 
    267287  object.Xd = Xd;
    268288  object.Yd = Yd;
     
    363383  Momentum.SetXYZT(0.0, 0.0, 0.0, 0.0);
    364384  Position.SetXYZT(0.0, 0.0, 0.0, 0.0);
     385  InitialPosition.SetXYZT(0.0, 0.0, 0.0, 0.0);
    365386  Area.SetXYZT(0.0, 0.0, 0.0, 0.0);
    366   Dxy = 0.0;
    367   SDxy = 0.0;
     387  L = 0.0;
     388  D0 = 0.0; 
     389  ErrorD0 = 0.0;
     390  DZ = 0.0;
     391  ErrorDZ = 0.0;
     392  P =0.0;
     393  ErrorP =0.0;
     394  PT = 0.0;
     395  ErrorPT = 0.0;
     396  CtgTheta = 0.0;
     397  ErrorCtgTheta = 0.0;
     398  Phi = 0.0;
     399  ErrorPhi = 0.0;
    368400  Xd = 0.0;
    369401  Yd = 0.0;
  • classes/DelphesClasses.h

    rdb7f5e4 r1f34dac  
    147147  Float_t Pz; // particle momentum vector (z component) | hepevt.phep[number][2]
    148148
    149   Float_t PT; // particle transverse momentum
     149  Float_t D0;
     150  Float_t DZ;
     151  Float_t P;
     152  Float_t PT;
     153  Float_t CtgTheta;
     154  Float_t Phi;
    150155  Float_t Eta; // particle pseudorapidity
    151   Float_t Phi; // particle azimuthal angle
    152 
    153156  Float_t Rapidity; // particle rapidity
    154157
     
    175178  Float_t Y; // vertex position (y component)
    176179  Float_t Z; // vertex position (z component)
    177 
    178   ClassDef(Vertex, 1)
     180 
     181  Double_t ErrorX;
     182  Double_t ErrorY;
     183  Double_t ErrorZ;
     184
     185  Int_t Index;
     186  Int_t NDF;
     187  Double_t Sigma;
     188  Double_t SumPT2;
     189  Double_t BTVSumPT2;
     190  Double_t GenDeltaZ;
     191  Double_t GenSumPT2;
     192
     193  ClassDef(Vertex, 2)
    179194};
    180195
     
    397412  Int_t Charge; // track charge
    398413
    399   Float_t PT; // track transverse momentum
    400 
    401414  Float_t Eta; // track pseudorapidity
    402   Float_t Phi; // track azimuthal angle
    403 
     415 
    404416  Float_t EtaOuter; // track pseudorapidity at the tracker edge
    405417  Float_t PhiOuter; // track azimuthal angle at the tracker edge
     
    415427  Float_t TOuter; // track position (z component) at the tracker edge
    416428
    417   Float_t Dxy;     // track signed transverse impact parameter
    418   Float_t SDxy;    // signed error on the track signed transverse impact parameter
     429  Float_t L; // track path length
     430   
     431  Float_t D0;     // track signed transverse impact parameter
     432  Float_t ErrorD0;    // signed error on the track signed transverse impact parameter
     433 
     434  Float_t DZ; // track transverse momentum
     435  Float_t ErrorDZ; // track transverse momentum error
     436 
     437  Float_t P; // track transverse momentum
     438  Float_t ErrorP; // track transverse momentum error
     439 
     440  Float_t PT; // track transverse momentum
     441  Float_t ErrorPT; // track transverse momentum error
     442 
     443  Float_t CtgTheta; // track transverse momentum
     444  Float_t ErrorCtgTheta; // track transverse momentum error
     445 
     446  Float_t Phi; // track azimuthal angle
     447  Float_t ErrorPhi; // track azimuthal angle
     448 
    419449  Float_t Xd;      // X coordinate of point of closest approach to vertex
    420450  Float_t Yd;      // Y coordinate of point of closest approach to vertex
     
    526556  Float_t DeltaPhi;
    527557
    528   TLorentzVector Momentum, Position, Area;
    529 
    530   Float_t Dxy;
    531   Float_t SDxy;
     558  TLorentzVector Momentum, Position, InitialPosition, PositionError, Area;
     559
     560  Float_t L; // path length
     561  Float_t D0;
     562  Float_t ErrorD0;
     563  Float_t DZ;
     564  Float_t ErrorDZ;
     565  Float_t P;
     566  Float_t ErrorP;
     567  Float_t PT;
     568  Float_t ErrorPT;
     569  Float_t CtgTheta;
     570  Float_t ErrorCtgTheta;
     571  Float_t Phi;
     572  Float_t ErrorPhi;
     573
    532574  Float_t Xd;
    533575  Float_t Yd;
     
    562604  Float_t SumPt;
    563605
     606  // vertex variables
     607 
     608  Int_t ClusterIndex;
     609  Int_t ClusterNDF;
     610  Double_t ClusterSigma;
     611  Double_t SumPT2;
     612  Double_t BTVSumPT2;
     613  Double_t GenDeltaZ;
     614  Double_t GenSumPT2;
     615
    564616  // N-subjettiness variables
    565617
  • modules/ImpactParameterSmearing.cc

    rdb7f5e4 r1f34dac  
    9696{
    9797  Candidate *candidate, *particle, *mother;
    98   Double_t xd, yd, zd, dxy, sx, sy, sz, ddxy;
     98  Double_t xd, yd, zd, d0, sx, sy, sz, dd0;
    9999  Double_t pt, eta, px, py, phi, e;
    100100
     
    103103  {
    104104
    105     // take momentum before smearing (otherwise apply double smearing on dxy)
     105    // take momentum before smearing (otherwise apply double smearing on d0)
    106106    particle = static_cast<Candidate*>(candidate->GetCandidates()->At(0));
    107107
     
    131131
    132132    // calculate impact parameter (after-smearing)
    133     dxy = (xd*py - yd*px)/pt;
     133    d0 = (xd*py - yd*px)/pt;
    134134
    135     ddxy = gRandom->Gaus(0.0, fFormula->Eval(pt, eta, phi, e));
     135    dd0 = gRandom->Gaus(0.0, fFormula->Eval(pt, eta, phi, e));
    136136
    137137    // fill smeared values in candidate
     
    143143    candidate->Zd = zd;
    144144
    145     candidate->Dxy = dxy;
    146     candidate->SDxy = ddxy;
     145    candidate->D0 = d0;
     146    candidate->ErrorD0 = dd0;
    147147
    148148    candidate->AddCandidate(mother);
  • modules/ModulesLinkDef.h

    rdb7f5e4 r1f34dac  
    3535#include "modules/EnergySmearing.h"
    3636#include "modules/MomentumSmearing.h"
     37#include "modules/TrackSmearing.h"
    3738#include "modules/ImpactParameterSmearing.h"
    3839#include "modules/TimeSmearing.h"
     
    5758#include "modules/StatusPidFilter.h"
    5859#include "modules/PdgCodeFilter.h"
     60#include "modules/BeamSpotFilter.h"
    5961#include "modules/Cloner.h"
    6062#include "modules/Weighter.h"
     
    6264#include "modules/JetFlavorAssociation.h"
    6365#include "modules/JetFakeParticle.h"
     66#include "modules/VertexFinder.h"
     67#include "modules/VertexSorter.h"
    6468#include "modules/ExampleModule.h"
    6569
     
    7983#pragma link C++ class EnergySmearing+;
    8084#pragma link C++ class MomentumSmearing+;
     85#pragma link C++ class TrackSmearing+;
    8186#pragma link C++ class ImpactParameterSmearing+;
    8287#pragma link C++ class TimeSmearing+;
     
    101106#pragma link C++ class StatusPidFilter+;
    102107#pragma link C++ class PdgCodeFilter+;
     108#pragma link C++ class BeamSpotFilter+;
    103109#pragma link C++ class Cloner+;
    104110#pragma link C++ class Weighter+;
     
    106112#pragma link C++ class JetFlavorAssociation+;
    107113#pragma link C++ class JetFakeParticle+;
     114#pragma link C++ class VertexFinder+;
     115#pragma link C++ class VertexSorter+;
    108116#pragma link C++ class ExampleModule+;
    109117
  • modules/ParticlePropagator.cc

    rdb7f5e4 r1f34dac  
    6767}
    6868
     69
    6970//------------------------------------------------------------------------------
    7071
     
    9192  fItInputArray = fInputArray->MakeIterator();
    9293
     94  // import beamspot
     95  try
     96  {
     97    fBeamSpotInputArray = ImportArray(GetString("BeamSpotInputArray", "BeamSpotFilter/beamSpotParticle"));
     98  }
     99  catch(runtime_error &e)
     100  {
     101    fBeamSpotInputArray = 0;
     102  } 
    93103  // create output arrays
    94104
     
    111121{
    112122  Candidate *candidate, *mother;
    113   TLorentzVector candidatePosition, candidateMomentum;
     123  TLorentzVector candidatePosition, candidateMomentum, beamSpotPosition;
    114124  Double_t px, py, pz, pt, pt2, e, q;
    115125  Double_t x, y, z, t, r, phi;
     
    120130  Double_t tmp, discr, discr2;
    121131  Double_t delta, gammam, omega, asinrho;
    122   Double_t rcu, rc2, dxy, xd, yd, zd;
    123 
     132  Double_t rcu, rc2, xd, yd, zd;
     133  Double_t l, d0, dz, p, ctgTheta, phip, etap, alpha;
     134  Double_t bsx, bsy, bsz;
     135         
    124136  const Double_t c_light = 2.99792458E8;
    125 
     137 
     138  if (!fBeamSpotInputArray || fBeamSpotInputArray->GetSize () == 0)
     139    beamSpotPosition.SetXYZT(0.0, 0.0, 0.0, 0.0);
     140  else
     141  {
     142    Candidate &beamSpotCandidate = *((Candidate *) fBeamSpotInputArray->At(0));
     143    beamSpotPosition = beamSpotCandidate.Position;
     144  }
     145 
    126146  fItInputArray->Reset();
    127147  while((candidate = static_cast<Candidate*>(fItInputArray->Next())))
     
    132152    y = candidatePosition.Y()*1.0E-3;
    133153    z = candidatePosition.Z()*1.0E-3;
     154   
     155    bsx = beamSpotPosition.X()*1.0E-3;
     156    bsy = beamSpotPosition.Y()*1.0E-3;
     157    bsz = beamSpotPosition.Z()*1.0E-3;
     158   
    134159    q = candidate->Charge;
    135160
     
    181206      y_t = y + py*t;
    182207      z_t = z + pz*t;
     208     
     209      l = TMath::Sqrt( (x_t - x)*(x_t - x) + (y_t - y)*(y_t - y) + (z_t - z)*(z_t - z));
    183210
    184211      mother = candidate;
     
    186213
    187214      candidate->Position.SetXYZT(x_t*1.0E3, y_t*1.0E3, z_t*1.0E3, candidatePosition.T() + t*e*1.0E3);
    188 
     215      candidate->L = l*1.0E3;
     216   
    189217      candidate->Momentum = candidateMomentum;
    190218      candidate->AddCandidate(mother);
     
    238266      yd = (rc2 > 0.0) ? yd / rc2 : -999;
    239267      zd = z + (TMath::Sqrt(xd*xd + yd*yd) - TMath::Sqrt(x*x + y*y))*pz/pt;
    240 
    241       // calculate impact paramater
    242       dxy = (xd*py - yd*px)/pt;
    243 
     268     
     269      // use perigee momentum rather than original particle
     270      // momentum, since the orignal particle momentum isn't known
     271     
     272      px = TMath::Sign(1.0,r) * pt * (-y_c / r_c);
     273      py = TMath::Sign(1.0,r) * pt * (x_c / r_c);
     274      etap = candidateMomentum.Eta();
     275      phip = TMath::ATan2(py, px);
     276       
     277      candidateMomentum.SetPtEtaPhiE(pt, etap, phip, candidateMomentum.E());
     278     
     279      // calculate additional track parameters (correct for beamspot position)
     280       
     281      d0        = (  (x - bsx) * py - (y - bsy) * px) / pt;
     282      dz        = z - ((x - bsx) * px + (py - bsy) * py) / pt * (pz / pt);
     283      p         = candidateMomentum.P();
     284      ctgTheta  = 1.0 / TMath::Tan (candidateMomentum.Theta ());
     285         
    244286      // 3. time evaluation t = TMath::Min(t_r, t_z)
    245287      //    t_r : time to exit from the sides
     
    287329      r_t = TMath::Hypot(x_t, y_t);
    288330
     331     
     332      // compute path length for an helix
     333     
     334      alpha = pz*1.0E9 / c_light / gammam;
     335      l = t * TMath::Sqrt(alpha*alpha + r*r*omega*omega);
     336         
    289337      if(r_t > 0.0)
    290338      {
     339       
     340        // store these variables before cloning
     341           
     342        candidate->D0 = d0*1.0E3;
     343        candidate->DZ = dz*1.0E3;
     344        candidate->P  = p;
     345        candidate->PT = pt;
     346        candidate->CtgTheta = ctgTheta;
     347        candidate->Phi = phip;
     348     
    291349        mother = candidate;
    292350        candidate = static_cast<Candidate*>(candidate->Clone());
     
    295353
    296354        candidate->Momentum = candidateMomentum;
    297         candidate->Dxy = dxy*1.0E3;
    298         candidate->Xd = xd*1.0E3;
     355       
     356            candidate->L  =  l*1.0E3;
     357       
     358            candidate->Xd = xd*1.0E3;
    299359        candidate->Yd = yd*1.0E3;
    300360        candidate->Zd = zd*1.0E3;
  • modules/ParticlePropagator.h

    rdb7f5e4 r1f34dac  
    3535class TClonesArray;
    3636class TIterator;
     37class TLorentzVector;
    3738
    3839class ParticlePropagator: public DelphesModule
     
    5556
    5657  const TObjArray *fInputArray; //!
     58  const TObjArray *fBeamSpotInputArray; //!
    5759
    5860  TObjArray *fOutputArray; //!
  • modules/PileUpMerger.cc

    rdb7f5e4 r1f34dac  
    170170      numberOfEvents = gRandom->Integer(2*fMeanPileUp + 1);
    171171      break;
     172    case 2:
     173      numberOfEvents = fMeanPileUp;
     174      break;   
    172175    default:
    173176      numberOfEvents = gRandom->Poisson(fMeanPileUp);
  • modules/TrackCountingBTagging.cc

    rdb7f5e4 r1f34dac  
    9696
    9797  Double_t jpx, jpy;
    98   Double_t dr, tpx, tpy, tpt;
    99   Double_t xd, yd, dxy, ddxy, ip, sip;
     98  Double_t dr, tpt;
     99  Double_t xd, yd, d0, dd0, ip, sip;
    100100
    101101  Int_t sign;
     
    117117    {
    118118      const TLorentzVector &trkMomentum = track->Momentum;
    119 
     119     
    120120      dr = jetMomentum.DeltaR(trkMomentum);
    121 
    122121      tpt = trkMomentum.Pt();
    123       tpx = trkMomentum.Px();
    124       tpy = trkMomentum.Py();
    125 
    126122      xd = track->Xd;
    127123      yd = track->Yd;
    128       dxy = TMath::Hypot(xd, yd);
    129       ddxy = track->SDxy;
     124      d0 = TMath::Hypot(xd, yd);
     125      dd0 = track->ErrorD0;
    130126
    131127      if(tpt < fPtMin) continue;
    132128      if(dr > fDeltaR) continue;
    133       if(dxy > fIPmax) continue;
     129      if(d0 > fIPmax) continue;
    134130
    135131      sign = (jpx*xd + jpy*yd > 0.0) ? 1 : -1;
    136132
    137       ip = sign*dxy;
    138       sip = ip / TMath::Abs(ddxy);
     133      ip = sign*d0;
     134      sip = ip / TMath::Abs(dd0);
    139135
    140136      if(sip > fSigMin) count++;
  • modules/TreeWriter.cc

    rdb7f5e4 r1f34dac  
    215215    entry->Pz = momentum.Pz();
    216216
     217    entry->D0            = candidate->D0;
     218    entry->DZ            = candidate->DZ;
     219    entry->P             = candidate->P;
     220    entry->PT            = candidate->PT;
     221    entry->CtgTheta      = candidate->CtgTheta;
     222    entry->Phi           = candidate->Phi;
     223
    217224    entry->Eta = eta;
    218225    entry->Phi = momentum.Phi();
     
    291298    entry->ZOuter = position.Z();
    292299    entry->TOuter = position.T()*1.0E-3/c_light;
    293 
    294     entry->Dxy = candidate->Dxy;
    295     entry->SDxy = candidate->SDxy ;
     300 
     301    entry->L = candidate->L;
     302 
     303    entry->D0            = candidate->D0;
     304    entry->ErrorD0       = candidate->ErrorD0;
     305    entry->DZ            = candidate->DZ;
     306    entry->ErrorDZ       = candidate->ErrorDZ;
     307    entry->P             = candidate->P;
     308    entry->ErrorP        = candidate->ErrorP;
     309    entry->PT            = candidate->PT;
     310    entry->ErrorPT       = candidate->ErrorPT;
     311    entry->CtgTheta      = candidate->CtgTheta;
     312    entry->ErrorCtgTheta = candidate->ErrorCtgTheta;
     313    entry->Phi           = candidate->Phi;
     314    entry->ErrorPhi      = candidate->ErrorPhi;
     315   
    296316    entry->Xd = candidate->Xd;
    297317    entry->Yd = candidate->Yd;
     
    307327
    308328    entry->Eta = eta;
    309     entry->Phi = momentum.Phi();
    310     entry->PT = pt;
    311 
     329   
    312330    particle = static_cast<Candidate*>(candidate->GetCandidates()->At(0));
    313331    const TLorentzVector &initialPosition = particle->Position;
Note: See TracChangeset for help on using the changeset viewer.