Fork me on GitHub

Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • modules/PileUpMerger.cc

    r2d494a6 r099becf  
    115115  TDatabasePDG *pdg = TDatabasePDG::Instance();
    116116  TParticlePDG *pdgParticle;
    117   Int_t pid;
     117  Int_t pid, nch, nvtx = -1;
    118118  Float_t x, y, z, t, vx, vy;
    119   Float_t px, py, pz, e;
    120   Double_t dz, dphi, dt;
     119  Float_t px, py, pz, e, pt;
     120  Double_t dz, dphi, dt, sumpt2, dz0, dt0;
    121121  Int_t numberOfEvents, event, numberOfParticles;
    122122  Long64_t allEntries, entry;
     
    132132  fFunction->GetRandom2(dz, dt);
    133133
     134  dz0 = -1.0e6;
     135  dt0 = -1.0e6;
     136 
    134137  dt *= c_light*1.0E3; // necessary in order to make t in mm/c
    135138  dz *= 1.0E3; // necessary in order to make z in mm
     139 
     140  //cout<<dz<<","<<dt<<endl;
     141 
    136142  vx = 0.0;
    137143  vy = 0.0;
     144 
    138145  numberOfParticles = fInputArray->GetEntriesFast();
     146  nch = 0;
     147  sumpt2 = 0.0;
     148   
    139149  while((candidate = static_cast<Candidate*>(fItInputArray->Next())))
    140150  {
     
    143153    z = candidate->Position.Z();
    144154    t = candidate->Position.T();
    145     candidate->Position.SetZ(z + dz);
    146     candidate->Position.SetT(t + dt);
     155    pt = candidate->Momentum.Pt();
     156       
     157    // take postion and time from first stable particle
     158    if (dz0 < -999999.0)
     159      dz0 = z;
     160    if (dt0 < -999999.0)
     161      dt0 = t;
     162
     163    // cancel any possible offset in position and time the input file
     164    candidate->Position.SetZ(z - dz0 + dz);
     165    candidate->Position.SetT(t - dt0 + dt);
     166   
    147167    fParticleOutputArray->Add(candidate);
    148   }
    149 
     168 
     169    if(TMath::Abs(candidate->Charge) >  1.0E-9)
     170    {
     171      nch++;   
     172      sumpt2 += pt*pt;
     173    } 
     174  }
     175 
    150176  if(numberOfParticles > 0)
    151177  {
    152     vx /= numberOfParticles;
    153     vy /= numberOfParticles;
    154   }
    155 
     178    vx /= sumpt2;
     179    vy /= sumpt2;
     180  }
     181 
     182  nvtx++;
    156183  factory = GetFactory();
    157184
    158185  vertex = factory->NewCandidate();
    159186  vertex->Position.SetXYZT(vx, vy, dz, dt);
     187  vertex->ClusterIndex = nvtx;
     188  vertex->ClusterNDF = nch;
     189  vertex->SumPT2 = sumpt2;
     190  vertex->GenSumPT2 = sumpt2;
     191 
    160192  fVertexOutputArray->Add(vertex);
    161193
     
    170202      numberOfEvents = gRandom->Integer(2*fMeanPileUp + 1);
    171203      break;
     204    case 2:
     205      numberOfEvents = fMeanPileUp;
     206      break;   
    172207    default:
    173208      numberOfEvents = gRandom->Poisson(fMeanPileUp);
     
    198233    vx = 0.0;
    199234    vy = 0.0;
     235   
    200236    numberOfParticles = 0;
     237    sumpt2 = 0.0;
     238   
    201239    while(fReader->ReadParticle(pid, x, y, z, t, px, py, pz, e))
    202240    {
     
    224262      vx += candidate->Position.X();
    225263      vy += candidate->Position.Y();
     264     
    226265      ++numberOfParticles;
    227 
     266      if(TMath::Abs(candidate->Charge) >  1.0E-9)
     267      {
     268        nch++;   
     269        sumpt2 += pt*pt;
     270      }
     271       
    228272      fParticleOutputArray->Add(candidate);
    229273    }
     
    234278      vy /= numberOfParticles;
    235279    }
     280   
     281    nvtx++;
    236282
    237283    vertex = factory->NewCandidate();
    238284    vertex->Position.SetXYZT(vx, vy, dz, dt);
     285   
     286    vertex->ClusterIndex = nvtx;
     287    vertex->ClusterNDF = nch;
     288    vertex->SumPT2 = sumpt2;
     289    vertex->GenSumPT2 = sumpt2;
     290   
    239291    vertex->IsPU = 1;
    240292
    241293    fVertexOutputArray->Add(vertex);
    242   }
    243 }
    244 
    245 //------------------------------------------------------------------------------
     294   
     295  }
     296}
     297
     298//------------------------------------------------------------------------------
Note: See TracChangeset for help on using the changeset viewer.