Fork me on GitHub

Changeset 1108 in svn


Ignore:
Timestamp:
May 7, 2013, 3:27:32 PM (12 years ago)
Author:
Pavel Demin
Message:

read momentum and position units from HepMC file

Location:
trunk/classes
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/classes/DelphesHepMCReader.cc

    r1105 r1108  
    7474  fWeightSize = 0;
    7575  fWeight.clear();
     76  fMomentumCoefficient = 1.0;
     77  fPositionCoefficient = 1.0;
    7678  fVertexCounter = -1;
    7779  fInCounter = -1;
     
    98100  map< int, pair< int, int > >::iterator itMotherMap;
    99101  map< int, pair< int, int > >::iterator itDaughterMap;
    100   char key;
     102  char key, momentumUnit[4], positionUnit[3];
    101103  int i, rc, state;
    102104  double weight;
     
    156158    }
    157159  }
     160  else if(key == 'U')
     161  {
     162    rc = sscanf(fBuffer + 1, "%3s %2s", momentumUnit, positionUnit);
     163
     164    if(rc != 2)
     165    {
     166      cerr << "** ERROR: " << "invalid units format" << endl;
     167      return kFALSE;
     168    }
     169
     170    if(strncmp(momentumUnit, "GEV", 3) == 0)
     171    {
     172      fMomentumCoefficient = 1.0;
     173    }
     174    else if(strncmp(momentumUnit, "MEV", 3) == 0)
     175    {
     176      fMomentumCoefficient = 0.001;
     177    }
     178   
     179    if(strncmp(positionUnit, "MM", 3) == 0)
     180    {
     181      fPositionCoefficient = 1.0;
     182    }
     183    else if(strncmp(positionUnit, "CM", 3) == 0)
     184    {
     185      fPositionCoefficient = 10.0;
     186    }
     187  }
    158188  else if(key == 'F')
    159189  {
     
    311341
    312342  candidate->Momentum.SetPxPyPzE(fPx, fPy, fPz, fE);
     343  if(fMomentumCoefficient != 1.0)
     344  {
     345    candidate->Momentum *= fMomentumCoefficient;
     346  }
    313347
    314348  candidate->M2 = 1;
     
    323357    candidate->M1 = fOutVertexCode;
    324358    candidate->Position.SetXYZT(fX, fY, fZ, fT);
     359    if(fPositionCoefficient != 1.0)
     360    {
     361      candidate->Position *= fPositionCoefficient;
     362    }
    325363  }
    326364  if(fInVertexCode < 0)
  • trunk/classes/DelphesHepMCReader.h

    r1105 r1108  
    6464  double fScale, fAlphaQCD, fAlphaQED;
    6565
     66  double fMomentumCoefficient, fPositionCoefficient;
     67
    6668  int fStateSize;
    6769  std::vector< int > fState;
Note: See TracChangeset for help on using the changeset viewer.