Fork me on GitHub

Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • modules/MomentumSmearing.cc

    r341014c r4827699  
    1717 */
    1818
     19
    1920/** \class MomentumSmearing
    2021 *
     
    3132#include "classes/DelphesFormula.h"
    3233
     34#include "ExRootAnalysis/ExRootResult.h"
     35#include "ExRootAnalysis/ExRootFilter.h"
    3336#include "ExRootAnalysis/ExRootClassifier.h"
    34 #include "ExRootAnalysis/ExRootFilter.h"
    35 #include "ExRootAnalysis/ExRootResult.h"
    3637
     38#include "TMath.h"
     39#include "TString.h"
     40#include "TFormula.h"
     41#include "TRandom3.h"
     42#include "TObjArray.h"
    3743#include "TDatabasePDG.h"
    38 #include "TFormula.h"
    3944#include "TLorentzVector.h"
    40 #include "TMath.h"
    41 #include "TObjArray.h"
    42 #include "TRandom3.h"
    43 #include "TString.h"
    4445
    45 #include <algorithm>
     46#include <algorithm>
     47#include <stdexcept>
    4648#include <iostream>
    4749#include <sstream>
    48 #include <stdexcept>
    4950
    5051using namespace std;
     
    9899
    99100  fItInputArray->Reset();
    100   while((candidate = static_cast<Candidate *>(fItInputArray->Next())))
     101  while((candidate = static_cast<Candidate*>(fItInputArray->Next())))
    101102  {
    102103    const TLorentzVector &candidatePosition = candidate->Position;
     
    107108    e = candidateMomentum.E();
    108109    res = fFormula->Eval(pt, eta, phi, e);
    109 
     110 
    110111    // apply smearing formula
    111112    //pt = gRandom->Gaus(pt, fFormula->Eval(pt, eta, phi, e) * pt);
     113   
     114    res = ( res > 1.0 ) ? 1.0 : res;
    112115
    113     res = (res > 1.0) ? 1.0 : res;
    114 
    115     pt = LogNormal(pt, res * pt);
    116 
     116    pt = LogNormal(pt, res * pt );
     117   
    117118    //if(pt <= 0.0) continue;
    118119
    119120    mother = candidate;
    120     candidate = static_cast<Candidate *>(candidate->Clone());
     121    candidate = static_cast<Candidate*>(candidate->Clone());
    121122    eta = candidateMomentum.Eta();
    122123    phi = candidateMomentum.Phi();
    123     candidate->Momentum.SetPtEtaPhiE(pt, eta, phi, pt * TMath::CosH(eta));
     124    candidate->Momentum.SetPtEtaPhiE(pt, eta, phi, pt*TMath::CosH(eta));
    124125    //candidate->TrackResolution = fFormula->Eval(pt, eta, phi, e);
    125126    candidate->TrackResolution = res;
    126127    candidate->AddCandidate(mother);
    127 
     128       
    128129    fOutputArray->Add(candidate);
    129130  }
     
    137138  if(mean > 0.0)
    138139  {
    139     b = TMath::Sqrt(TMath::Log((1.0 + (sigma * sigma) / (mean * mean))));
    140     a = TMath::Log(mean) - 0.5 * b * b;
     140    b = TMath::Sqrt(TMath::Log((1.0 + (sigma*sigma)/(mean*mean))));
     141    a = TMath::Log(mean) - 0.5*b*b;
    141142
    142     return TMath::Exp(a + b * gRandom->Gaus(0.0, 1.0));
     143    return TMath::Exp(a + b*gRandom->Gaus(0.0, 1.0));
    143144  }
    144145  else
     
    148149}
    149150
     151
    150152//------------------------------------------------------------------------------
Note: See TracChangeset for help on using the changeset viewer.