Change in calculation of rapidity, include case in which numerically e == pz.
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 12 Mar 2002 17:02:20 +0000 (17:02 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 12 Mar 2002 17:02:20 +0000 (17:02 +0000)
EVGEN/AliGenMC.cxx

index 9d20778194b5438dcddf7adb5489338ac2b65d65..34b1e2e97e2559857588cdc85650b50dc3a86551 100644 (file)
 
 /*
 $Log$
+Revision 1.4  2001/11/27 13:13:07  morsch
+Maximum lifetime for long-lived particles to be put on the stack is parameter.
+It can be set via SetMaximumLifetime(..).
+
 Revision 1.3  2001/10/16 08:48:56  morsch
 Common vertex related code moved to base class AliGenerator.
 
@@ -132,14 +136,29 @@ Bool_t AliGenMC::KinematicSelection(TParticle *particle, Int_t flag)
     Float_t pt    = particle->Pt();
     Float_t p     = particle->P();
     Float_t theta = particle->Theta();
+    Float_t mass  = particle->GetMass();
+    Float_t mt2   = pt * pt + mass * mass;
+    
     Float_t phi   = Float_t(TMath::ATan2(Double_t(py),Double_t(px)));
-    Float_t y;
+    Double_t y, y0;
+
+    if (TMath::Abs(pz) != e) {
+       y = 0.5*TMath::Log((e+pz)/(e-pz));
+    } else {
+       y = 1.e10;
+    }
     
-    if ( (e-pz)<=0 || (e+pz)<=0 ) {
-       return kFALSE;
+    if (mt2) {
+       y0 = 0.5*TMath::Log((e+TMath::Abs(pz))*(e+TMath::Abs(pz))/mt2);
     } else {
-      y = 0.5*TMath::Log((e+pz)/(e-pz));
+       if (TMath::Abs(y) < 1.e10) {
+           y0 = y;
+       } else {
+           y0 = 1.e10;
+       }
     }
+      
+    y = (pz < 0) ? -y0 : y0;
     
     if (flag == 0) {
 //