New version of ZDC from E.Scomparin & C.Oppedisano
authorfca <fca@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 10 Jul 2000 13:58:01 +0000 (13:58 +0000)
committerfca <fca@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 10 Jul 2000 13:58:01 +0000 (13:58 +0000)
15 files changed:
ZDC/AliGenZDC.cxx [new file with mode: 0644]
ZDC/AliGenZDC.h [new file with mode: 0644]
ZDC/AliZDC.cxx
ZDC/AliZDC.h
ZDC/AliZDCf.F [deleted file]
ZDC/AliZDCv1.cxx [new file with mode: 0644]
ZDC/AliZDCv1.h [new file with mode: 0644]
ZDC/Makefile
ZDC/ZDCLinkDef.h
ZDC/light22620552207s [new file with mode: 0644]
ZDC/light22620552208s [new file with mode: 0644]
ZDC/light22620552209s [new file with mode: 0644]
ZDC/light22620552210s [new file with mode: 0644]
ZDC/testGenFermi.C [new file with mode: 0644]
ZDC/zdc_common.inc [deleted file]

diff --git a/ZDC/AliGenZDC.cxx b/ZDC/AliGenZDC.cxx
new file mode 100644 (file)
index 0000000..c17bebe
--- /dev/null
@@ -0,0 +1,308 @@
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+/*
+$Log$
+Revision 1.7  2000/01/19 17:17:40  fca
+
+Revision 1.6  1999/09/29 09:24:35  fca
+Introduction of the Copyright and cvs Log
+
+*/
+#include <TRandom.h>
+#include <TLorentzVector.h>
+#include <TVector3.h>
+
+#include "AliGenZDC.h"
+#include "AliConst.h"
+#include "AliPDG.h"
+#include "AliRun.h"
+ClassImp(AliGenZDC)
+//_____________________________________________________________________________
+AliGenZDC::AliGenZDC()
+   :AliGenerator()
+{
+  //
+  // Default constructor
+  //
+  fIpart = 0;
+}
+
+//_____________________________________________________________________________
+AliGenZDC::AliGenZDC(Int_t npart)
+   :AliGenerator(npart)
+{
+  //
+  // Standard constructor
+  //
+  fName = "AliGenZDC";
+  fTitle = "Generation of Test Particles for ZDCs";
+  fIpart = kNeutron;
+  fCosx  = 0.;
+  fCosy  = 0.;
+  fCosz  = 1.;
+  fPseudoRapidity = 0.;
+  fFermiflag = 1;
+  // LHC values for beam divergence and crossing angle
+  fBeamDiv = 0.000032;
+  fBeamCrossAngle = 0.0001;
+  fBeamCrossPlane = 2;
+}
+
+//_____________________________________________________________________________
+void AliGenZDC::Init()
+{
+  printf("             Initializing AliGenZDC\n");
+  printf("     Fermi flag = %d, Beam Divergence = %f, Crossing Angle "
+         "= %f, Crossing Plane = %d\n\n", fFermiflag, fBeamDiv, fBeamCrossAngle,
+        fBeamCrossPlane);
+  //Initialize Fermi momentum distributions for Pb-Pb
+  FermiTwoGaussian(207.,82.,fPp,fProbintp,fProbintn);
+}  
+  
+//_____________________________________________________________________________
+void AliGenZDC::Generate()
+{
+  //
+  // Generate one trigger (n or p)
+  //
+  Double_t mass, pLab[3], balp0, balp[3], ddp[3], dddp0, dddp[3];
+  Float_t ptot = fPMin;
+  Int_t nt;
+  
+  if(fPseudoRapidity==0.){
+    pLab[0] = ptot*fCosx;
+    pLab[1] = ptot*fCosy;
+    pLab[2] = ptot*fCosz;
+  }
+  else{
+    Float_t scang = 2*TMath::ATan(TMath::Exp(-(fPseudoRapidity)));
+    pLab[0] = -ptot*TMath::Sin(scang);
+    pLab[1] = 0.;
+    pLab[2] = ptot*TMath::Cos(scang);
+  }
+  for(Int_t i=0; i<=2; i++){
+     fP[i] = pLab[i];
+  }
+  
+  // Beam divergence and crossing angle
+  if(fBeamDiv!=0.) {BeamDivCross(0,fBeamDiv,fBeamCrossAngle,fBeamCrossPlane,pLab);}
+  if(fBeamCrossAngle!=0.) {BeamDivCross(1,fBeamDiv,fBeamCrossAngle,fBeamCrossPlane,pLab);}
+  
+  // If required apply the Fermi momentum
+  if(fFermiflag==1){
+    if((fIpart==kProton) || (fIpart==kNeutron)){
+      ExtractFermi(fIpart,fPp,fProbintp,fProbintn,ddp);
+    }
+    if(fIpart==kProton) {mass = 0.93956563;}
+    if(fIpart==kNeutron) {mass = 0.93827231;}
+//  printf(" pLABx = %f  pLABy = %f  pLABz = %f \n",pLab[0],pLab[1],pLab[2]); 
+    for(Int_t i=0; i<=2; i++){
+       balp[i] = -pLab[i];
+    }
+    balp0 = TMath::Sqrt(pLab[0]*pLab[0]+pLab[1]*pLab[1]+pLab[2]*pLab[2]+mass*mass);
+    for(Int_t i=0; i<=2; i++){
+       dddp[i] = ddp[i];
+    }
+    dddp0 = TMath::Sqrt(dddp[0]*dddp[0]+dddp[1]*dddp[1]+dddp[2]*dddp[2]+mass*mass);
+    
+    TVector3 b(balp[0]/balp0, balp[1]/balp0, balp[2]/balp0);
+    TLorentzVector pFermi(dddp[0], dddp[1], dddp[2], dddp0);
+
+//    printf(" pmu -> pLABx = %f  pLABy = %f  pLABz = %f  E = %f\n",
+//           balp[0],balp[1],balp[2],balp0); 
+//    printf(" Beta -> bx = %f  by = %f  bz = %f\n", b[0], b[1], b[2]);  
+//    printf(" pFermi -> px = %f, py = %f, pz = %f\n", pFermi[0], pFermi[1], pFermi[2]);
+    
+    pFermi.Boost(b);
+
+//    printf(" Boosted momentum -> px = %f, py = %f, pz = %f\n",
+//          pFermi[0], pFermi[1], pFermi[2]);
+    for(Int_t i=0; i<=2; i++){
+       fBoostP[i] = pFermi[i];
+    }
+
+  }
+    
+  Float_t polar[3] = {0,0,0};
+  gAlice->SetTrack(fTrackIt,-1,fIpart,fBoostP,fOrigin.GetArray(),polar,0,
+                  "Primary",nt);
+}
+
+//_____________________________________________________________________________
+void AliGenZDC::FermiTwoGaussian(Double_t A, Float_t Z, Double_t* fPp, Double_t*
+               fProbintp, Double_t* fProbintn)
+{
+//
+// Momenta distributions according to the "double-gaussian"
+// distribution (Ilinov) - equal for protons and neutrons
+//
+//   printf("          Initialization of Fermi momenta distribution\n");
+   fProbintp[0] = 0;
+   fProbintn[0] = 0;
+   Double_t sig1 = 0.113;
+   Double_t sig2 = 0.250;
+   Double_t alfa = 0.18*(TMath::Power((A/12.),(Float_t)1/3));
+   Double_t xk = (2*k2PI)/((1.+alfa)*(TMath::Power(k2PI,1.5)));
+   
+   for(Int_t i=1; i<=200; i++){
+      Double_t p = i*0.005;
+      fPp[i] = p;
+//      printf(" fPp[%d] = %f\n",i,fPp[i]);
+      Double_t e1 = (p*p)/(2.*sig1*sig1);
+      Double_t e2 = (p*p)/(2.*sig2*sig2);
+      Double_t f1 = TMath::Exp(-(e1));
+      Double_t f2 = TMath::Exp(-(e2));
+      Double_t probp = xk*p*p*(f1/(TMath::Power(sig1,3.))+
+                      alfa*f2/(TMath::Power(sig2,3.)))*0.005;
+//      printf("       probp = %f\n",probp);
+      fProbintp[i] = fProbintp[i-1] + probp;
+      fProbintn[i] = fProbintp[i];
+//      printf(" fProbintp[%d] = %f, fProbintp[%d] = %f\n",i,fProbintp[i],i,fProbintn[i]);
+   }
+} 
+//_____________________________________________________________________________
+void AliGenZDC::ExtractFermi(Int_t id, Double_t* fPp, Double_t* fProbintp,
+                Double_t* fProbintn, Double_t* ddp)
+{
+//
+// Compute Fermi momentum for spectator nucleons
+//
+  Int_t i;
+  Float_t xx = gRandom->Rndm();
+  if(id==kProton){
+    for(i=0; i<=200; i++){
+       if((xx>=fProbintp[i-1]) && (xx<fProbintp[i])) break;
+       }
+  }
+  else if(id==kNeutron){
+    for(i=0; i<=200; i++){
+       if((xx>=fProbintn[i-1]) && (xx<fProbintn[i])) break;
+       }
+   }
+         Float_t pext = fPp[i]+0.001;
+        Float_t phi = k2PI*(gRandom->Rndm());
+        Float_t cost = (1.-2.*(gRandom->Rndm()));
+        Float_t tet = TMath::ACos(cost);
+        ddp[0] = pext*TMath::Sin(tet)*TMath::Cos(phi);
+        ddp[1] = pext*TMath::Sin(tet)*TMath::Sin(phi);
+        ddp[2] = pext*cost;
+}
+
+//_____________________________________________________________________________
+void AliGenZDC::BeamDivCross(Int_t icross, Float_t fBeamDiv, Float_t fBeamCrossAngle, 
+                Int_t fBeamCrossPlane, Double_t* pLab)
+{
+  Double_t tetpart, fipart, tetdiv, fidiv, angleSum[2], tetsum, fisum, dplab[3];
+  Double_t rvec;
+  
+  Double_t pmq = 0.;
+  for(int i=0; i<=2; i++){
+     dplab[i] = pLab[i];
+     pmq = pmq+pLab[i]*pLab[i];
+  }
+  Double_t pmod = TMath::Sqrt(pmq);
+//  printf("   pmod = %f\n",pmod);
+
+//  printf("   icross = %d, fBeamDiv = %f\n",icross,fBeamDiv);
+  if(icross==0){
+    rvec = gRandom->Gaus(0.0,1.0);
+    tetdiv = fBeamDiv * TMath::Abs(rvec);
+    fidiv = (gRandom->Rndm())*k2PI;
+  }
+  else if(icross==1){
+    if(fBeamCrossPlane==0.){
+      tetdiv = 0.;
+      fidiv = 0.;
+    }
+    else if(fBeamCrossPlane==1.){
+      tetdiv = fBeamCrossAngle;
+      fidiv = 0.;
+    }
+    else if(fBeamCrossPlane==2.){
+      tetdiv = fBeamCrossAngle;
+      fidiv = k2PI/4.;
+    }
+  }
+//  printf("   tetdiv = %f, fidiv = %f\n",tetdiv,fidiv);
+  tetpart = TMath::ATan(TMath::Sqrt(dplab[0]*dplab[0]+dplab[1]*dplab[1])/dplab[2]);
+  if(dplab[1]!=0. || dplab[0]!=0.){
+    fipart = TMath::ATan2(dplab[1],dplab[0]);
+  }
+  else{
+    fipart = 0.;
+  }
+  if(fipart<0.) {fipart = fipart+k2PI;}
+//  printf("   tetpart = %f, fipart = %f\n",tetpart,fipart);
+  tetdiv = tetdiv*kRaddeg;
+  fidiv = fidiv*kRaddeg;
+  tetpart = tetpart*kRaddeg;
+  fipart = fipart*kRaddeg;
+  AddAngle(tetpart,fipart,tetdiv,fidiv,angleSum);
+  tetsum = angleSum[0];
+  fisum  = angleSum[1];
+//  printf("   tetsum = %f, fisum = %f\n",tetsum,fisum);
+  tetsum = tetsum*kDegrad;
+  fisum = fisum*kDegrad;
+  pLab[0] = pmod*TMath::Sin(tetsum)*TMath::Cos(fisum);
+  pLab[1] = pmod*TMath::Sin(tetsum)*TMath::Sin(fisum);
+  pLab[2] = pmod*TMath::Cos(tetsum);
+//  printf("   pLab[0] = %f pLab[1] = %f pLab[2] = %f \n\n",
+//         pLab[0],pLab[1],pLab[2]);
+  for(Int_t i=0; i<=2; i++){
+     fDivP[i] = pLab[i];
+  }
+}
+  
+//_____________________________________________________________________________
+void  AliGenZDC::AddAngle(Double_t theta1, Double_t phi1, Double_t theta2,
+              Double_t phi2, Double_t* angleSum)
+{
+  Double_t temp, conv, cx, cy, cz, ct1, st1, ct2, st2, cp1, sp1, cp2, sp2;
+  Double_t rtetsum, tetsum, fisum;
+  
+  temp = -1.;
+  conv = 180./TMath::ACos(temp);
+  
+  ct1 = TMath::Cos(theta1/conv);
+  st1 = TMath::Sin(theta1/conv);
+  cp1 = TMath::Cos(phi1/conv);
+  sp1 = TMath::Sin(phi1/conv);
+  ct2 = TMath::Cos(theta2/conv);
+  st2 = TMath::Sin(theta2/conv);
+  cp2 = TMath::Cos(phi2/conv);
+  sp2 = TMath::Sin(phi2/conv);
+  cx = ct1*cp1*st2*cp2+st1*cp1*ct2-sp1*st2*sp2;
+  cy = ct1*sp1*st2*cp2+st1*sp1*ct2+cp1*st2*sp2;
+  cz = ct1*ct2-st1*st2*cp2;
+  
+  rtetsum = TMath::ACos(cz);
+  tetsum = conv*rtetsum;
+  if(tetsum==0. || tetsum==180.){
+    fisum = 0.;
+    return;
+  }
+  temp = cx/TMath::Sin(rtetsum);
+  if(temp>1.) temp=1.;
+  if(temp<-1.) temp=-1.;
+  fisum = conv*TMath::ACos(temp);
+  if(cy<0) {fisum = 360.-fisum;}
+//  printf("   AddAngle -> tetsum = %f, fisum = %f\n",tetsum, fisum); 
+  angleSum[0] = tetsum;
+  angleSum[1] = fisum;
+}  
+
diff --git a/ZDC/AliGenZDC.h b/ZDC/AliGenZDC.h
new file mode 100644 (file)
index 0000000..a135240
--- /dev/null
@@ -0,0 +1,76 @@
+#ifndef ALIGENZDC_H
+#define ALIGENZDC_H
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+/* $Id$ */
+
+////////////////////////////////////////////////////
+//                                                //  
+// Test pc generator for ZDC (taking into account //
+// Fermi smearing, beam divergence and crossing)  //
+//                                                //
+////////////////////////////////////////////////////
+
+
+#include <TMath.h>
+#include "AliGenerator.h"
+
+class AliGenZDC : public AliGenerator {
+
+public:
+  AliGenZDC();
+  AliGenZDC(Int_t npart);
+  virtual      ~AliGenZDC() {}
+  virtual void Init();
+  virtual void Generate();
+  
+  // Parameters that could be set for generation
+  virtual void SetParticle(Int_t ipart) {fIpart=ipart;};
+  virtual void SetMomentum(Float_t ptot) {fPMin=ptot; fPMax=ptot;};
+  virtual void SetDir(Float_t zpsrp, Float_t cosx, Float_t cosy, Float_t cosz)
+                {fPseudoRapidity=zpsrp; fCosx=cosx; fCosy=cosy; fCosz=cosz;};
+  virtual void SetFermi(Int_t Fflag) {fFermiflag=Fflag;};
+  virtual void SetDiv(Float_t bmdiv, Float_t bmcra, Int_t iflcr) 
+                {fBeamDiv=bmdiv; fBeamCrossAngle=bmcra; fBeamCrossPlane=iflcr;};
+  
+  // Getters 
+  Double_t GetFermi2p(Int_t key) {return fProbintp[key];}
+  Double_t GetFermi2n(Int_t key) {return fProbintn[key];}
+  Float_t  GetMomentum(Int_t key) {return fP[key];};
+  Float_t  GetBoostMomentum(Int_t key) {return fBoostP[key];};
+  Float_t  GetDivMomentum(Int_t key) {return fDivP[key];};
+  
+  // Fermi smearing, beam divergence and crossing angle               
+  virtual void FermiTwoGaussian(Double_t A, Float_t Z, Double_t* pp, 
+                Double_t* probintp, Double_t* probintn);
+  virtual void ExtractFermi(Int_t id, Double_t* pp, Double_t* probintp, 
+                Double_t* probintn, Double_t* pFermi);
+  virtual void BeamDivCross(Int_t icross, Float_t divergence, Float_t crossangle, 
+                Int_t crossplane, Double_t* pLab);
+  virtual void AddAngle(Double_t theta1, Double_t phi1, Double_t theta2,
+               Double_t phi2, Double_t* angle);
+protected:
+  Int_t    fIpart;              // Particle to generate
+  Float_t  fCosx;               // Cos x of particle
+  Float_t  fCosy;               // Cos y of particle
+  Float_t  fCosz;               // Cos z of particle
+  Float_t  fPseudoRapidity;     // Pseudo Rapidity of particle
+  Int_t    fFermiflag;          // Fermi momentum flag
+  Float_t  fBeamDiv;            // Beam divergence
+  Float_t  fBeamCrossAngle;     // Beam crossing angle
+  Int_t    fBeamCrossPlane;     // Beam crossing plane
+  Double_t fProbintp[201];      // for protons
+  Double_t fProbintn[201];      // for neutrons
+  Double_t fPp[201];            // for protons
+  Double_t fP[3];               // momentum
+  Float_t fBoostP[3];           // boost vector
+  Float_t fDivP[3];             // divergence
+  
+   ClassDef(AliGenZDC,1)  // Generator for AliZDC class
+};
+
+#endif
index d4bbb57..7eb20d5 100644 (file)
@@ -15,6 +15,8 @@
 
 /*
 $Log$
+Revision 1.7  2000/01/19 17:17:40  fca
+
 Revision 1.6  1999/09/29 09:24:35  fca
 Introduction of the Copyright and cvs Log
 
@@ -27,20 +29,6 @@ Introduction of the Copyright and cvs Log
 //  detector. Functions specific to one particular geometry are              //
 //  contained in the derived classes                                         //
 //                                                                           //
-//Begin_Html
-/*
-<img src="picts/AliZDCClass.gif">
-</pre>
-<br clear=left>
-<font size=+2 color=red>
-<p>The responsible person for this module is
-<a href="mailto:Eugenio.Scomparin@cern.ch">Eugenio Scomparin</a>.
-</font>
-<pre>
-*/
-//End_Html
-//                                                                           //
-//                                                                           //
 ///////////////////////////////////////////////////////////////////////////////
 
 #include <TBRIK.h>
@@ -52,33 +40,6 @@ Introduction of the Copyright and cvs Log
 #include "AliConst.h"
 #include "AliMC.h"
 
-#ifndef WIN32
-# define zdc_init       zdc_init_
-# define zdc_step       zdc_step_
-# define zdc_setbeam    zdc_setbeam_
-# define zdc_sethijing  zdc_sethijing_
-# define zdc_setvenus   zdc_setvenus_
-# define zdc_setkine    zdc_setkine_
-#else
-# define zdc_step       ZDC_STEP
-# define zdc_setbeam    ZDC_SETBEAM
-# define zdc_sethijing  ZDC_SETHIJING
-# define zdc_setvenus   ZDC_SETVENUS
-# define zdc_setkine    ZDC_SETKINE
-#endif
-
-extern "C" void type_of_call zdc_init();
-extern "C" void type_of_call zdc_step();
-extern "C" void type_of_call zdc_setbeam(Int_t beam, Float_t fx, Float_t fy,
-                                        Float_t sx, Float_t sy, Float_t div,
-                                        Float_t angle, Int_t cross);
-extern "C" void type_of_call zdc_sethijing(Int_t hij, Int_t hijf, Int_t hijsp,
-                                          DEFCHARD DEFCHARL);
-extern "C" void type_of_call zdc_setvenus(Int_t hiv, Int_t hivf, Int_t hivsp,
-                                         DEFCHARD DEFCHARL);
-extern "C" void type_of_call zdc_setkine(Int_t code, Float_t pmom, Float_t cx,
-                                        Float_t cy, Float_t cz, Int_t type,
-                                        Int_t fermi);
  
 ClassImp(AliZDC)
  
@@ -88,7 +49,8 @@ AliZDC::AliZDC()
   //
   // Default constructor for the Zero Degree Calorimeter base class
   //
-  fIshunt   = 0;
+  fIshunt = 1;
+  fHits = 0;
 }
  
 //_____________________________________________________________________________
@@ -104,19 +66,102 @@ AliZDC::AliZDC(const char *name, const char *title)
   fHits   = new TClonesArray("AliZDChit",  405);
   gAlice->AddHitList(fHits);
   
-  fIshunt     =  1;
+  fIshunt =  1;
+  
+  fDimZN[0] = 3.52;
+  fDimZN[1] = 3.52;
+  fDimZN[2] = 50.;
+  fDimZP[0] = 11.2;
+  fDimZP[1] = 6.;
+  fDimZP[2] = 75.;
+  fPosZN[0] = 0.;
+  fPosZN[1] = 0.;
+  fPosZN[2] = 11650.;
+  fPosZP[0] = -23.;
+  fPosZP[1] = 0.;
+  fPosZP[2] = 11600.;
+  fFibZN[0] = 0.;
+  fFibZN[1] = 0.01825;
+  fFibZN[2] = 50.;
+  fFibZP[0] = 0.;
+  fFibZP[1] = 0.0275;
+  fFibZP[2] = 75.;
+  fGrvZN[0] = 0.03;
+  fGrvZN[1] = 0.03;
+  fGrvZN[2] = 50.;
+  fGrvZP[0] = 0.04;
+  fGrvZP[1] = 0.04;
+  fGrvZP[2] = 75.;
+  fDivZN[0] = 11;
+  fDivZN[1] = 11;
+  fDivZN[2] = 0;
+  fDivZP[0] = 7;
+  fDivZP[1] = 15;
+  fDivZP[2] = 0;
+  fTowZN[0] = 2;
+  fTowZN[1] = 2;
+  fTowZP[0] = 4;
+  fTowZP[1] = 1;
 }
  
 //_____________________________________________________________________________
 void AliZDC::AddHit(Int_t track, Int_t *vol, Float_t *hits)
 {
   //
-  // Add a Zero Degree Calorimeter hit
+  // Add a ZDC hit
   //
+  static Float_t primKinEn, xImpact, yImpact, sFlag;
+
   TClonesArray &lhits = *fHits;
-  new(lhits[fNhits++]) AliZDChit(fIshunt,track,vol,hits);
+
+  AliZDChit *newquad, *curquad;
+  newquad = new AliZDChit(fIshunt, track, vol, hits);
+  Int_t i;
+  for(i=0; i<fNhits; i++){
+    // If the hits are equal (same track, same volume), sum them.
+     curquad=(AliZDChit*) lhits[i];
+     if(*curquad==*newquad){
+        *curquad = *curquad+*newquad;
+        delete newquad;
+//        fHits->Print("");
+       return;
+      }
+   }
+   
+   //Otherwise create a new hit.
+   if(fNhits==0){
+      // First hit -> setting flag for primary or secondary particle
+      Int_t primary = gAlice->GetPrimary(track);     
+      if(track != primary){
+        newquad->fSFlag = 1;  // Hit created by secondary particle entering the ZDC
+      }
+      else if(track == primary){
+        newquad->fSFlag = 0;  // Hit created by PRIMARY particle entering the ZDC
+      }  
+      sFlag = newquad->fSFlag;
+      primKinEn = newquad->fPrimKinEn;
+      xImpact = newquad->fXImpact;
+      yImpact = newquad->fYImpact;
+   }
+   else{       
+      newquad->fPrimKinEn = primKinEn;
+      newquad->fXImpact = xImpact;
+      newquad->fYImpact = yImpact;
+      newquad->fSFlag = sFlag;
+   }
+   new(lhits[fNhits++]) AliZDChit(newquad);
+    if(fNhits==1) {
+//      Int_t Curtrack = gAlice->CurrentTrack();
+//      Int_t Prim = gAlice->GetPrimary(Curtrack);
+//      printf ("              Primary track: %d, Current track: %d \n", 
+//              Prim, Curtrack);
+//      fHits->Print("");
+    }
+    delete newquad;
+//    fHits->Print("");
+  
 }
+  
 //_____________________________________________________________________________
 void AliZDC::BuildGeometry()
 {
@@ -126,21 +171,19 @@ void AliZDC::BuildGeometry()
   // This routine is dummy for the moment
   //
 
-  //  TNode *Node, *Top;
-  //  TBRIK *brik;
-  //  const int kColorZDC  = kRed;
+  TNode *node, *top;
+  TBRIK *brik;
+  const int kColorZDC  = kRed;
   
   //
-  // Top=gAlice->GetGeometry()->GetNode("alice");
+  top=gAlice->GetGeometry()->GetNode("alice");
   
   // ZDC
-  /*
     brik = new TBRIK("S_ZDC","ZDC box","void",300,300,5);
-    Top->cd();
-    Node = new TNode("ZDC","ZDC","S_ZDC",0,0,600,"");
-    Node->SetLineColor(kColorZDC);
-    fNodes->Add(Node);
-  */
+    top->cd();
+    node = new TNode("ZDC","ZDC","S_ZDC",0,0,600,"");
+    node->SetLineColor(kColorZDC);
+    fNodes->Add(node);
 }
 
 //_____________________________________________________________________________
@@ -153,812 +196,12 @@ Int_t AliZDC::DistancetoPrimitive(Int_t , Int_t )
   return 9999;
 }
  
-//_____________________________________________________________________________
-void AliZDC::SetBeam(Int_t beam, Float_t fx, Float_t fy, Float_t sx,
-                    Float_t sy, Float_t div, Float_t angle, Int_t cross)
-{
-  //
-  // Set beam characteristic
-  // This routine has to be revised as it is disconnected from the
-  // actual generation in this version of AliRoot
-  //
-
-  // beam  : 1 = gaussian beam
-  //       : 2 = uniform beam
-  // fx    : x-coordinate of beam offset
-  // fy    : y-coordinate of beam offset
-  // sx    : sigma-x of the beam (gaussian or uniform)
-  // sy    : sigma-y of the beam (gaussian or uniform)
-  // div   : divergency of the beam (32*10**-6 rad for LHC)
-  // angle : beam crossing angle (100*10**-6 rad for LHC)
-  // cross : 1 = horizontal beam crossing
-  //       : 2 = vertical beam crossing
-  zdc_setbeam(beam,fx,fy,sx,sy,div,angle,cross);
-}
-
-//_____________________________________________________________________________
-void AliZDC::SetHijing(Int_t hij, Int_t hijf, Int_t hijsp, const char *file)
-{
-  //
-  // Set the parameter for the HIJING generation
-  // This routine has to be revised as it is disconnected from the
-  // actual generation in this version of AliRoot
-  //
-
-  // HIJ  : 1 = read HIJING event file
-  //      : 2 =  "     "      "    "    + debug
-  // HIJF : event number of the first event to be read from file
-  // HIJSP: 0 = read all particles
-  //      : 1 = remove spectator nucleons
-  zdc_sethijing(hij,hijf,hijsp, PASSCHARD(file) PASSCHARL(file));
-}
-
-//_____________________________________________________________________________
-void AliZDC::SetVenus(Int_t hiv, Int_t hivf, Int_t hivsp, const char *file)
-{
-  //
-  // Set the parameter for the VENUS generation
-  // This routine has to be revised as it is disconnected from the
-  // actual generation in this version of AliRoot
-  //
-
-  // HIV  : 1 = read VENUS event file
-  //      : 2 =  "     "      "    "    + debug
-  // HIVF : event number of the first event to be read from file
-  // HIVSP: 0 = read all particles
-  //      : 1 = remove spectator nucleons
-  zdc_setvenus(hiv,hivf,hivsp, PASSCHARD(file) PASSCHARL(file));
-}
-
-//_____________________________________________________________________________
-void AliZDC::SetKine(Int_t code, Float_t pmom, Float_t cx, Float_t cy,
-                    Float_t cz, Int_t type, Int_t fermi)
-{
-  //
-  // Set the parameter for the event generation
-  // This routine has to be revised as it is disconnected from the
-  // actual generation in this version of AliRoot
-  //
-
-  // code     : GEANT code of the test particle
-  // pmom     : absolute value of particle momentum
-  // cx,cy,cz : director cosines of the track (if type)
-  // type     :  0 = take director cosines from cx,cy,cz
-  //          : <>0 = pseudorapidity of the test particle
-  // fermi    : 0 = no Fermi motion for the spectator nucleons
-  //          : 1 = Fermi motion for the spectator nucleons
-  zdc_setkine(code,pmom,cx,cy,cz,type,fermi);
-}
 //_____________________________________________________________________________
 void AliZDC::StepManager()
 {
   //
   // Routine called at every step in the Zero Degree Calorimeter
-  // This is a simple interface to the FORTRAN routine
-  // A step manager should be written
-  //
-  zdc_step();
-}
-
-ClassImp(AliZDCv1)
-
-///////////////////////////////////////////////////////////////////////////////
-//                                                                           //
-//  Zero Degree Calorimeter version 1                                        //
-//                                                                           //
-//Begin_Html
-/*
-<img src="picts/AliZDCv1Class.gif">
-*/
-//End_Html
-//                                                                           //
-//                                                                           //
-///////////////////////////////////////////////////////////////////////////////
-
-//_____________________________________________________________________________
-AliZDCv1::AliZDCv1() : AliZDC()
-{
-  //
-  // Default constructor for Zero Degree Calorimeter
-  //
-}
-//_____________________________________________________________________________
-AliZDCv1::AliZDCv1(const char *name, const char *title)
-  : AliZDC(name,title)
-{
-  //
-  // Standard constructor for Zero Degree Calorimeter 
-  //
-}
-//_____________________________________________________________________________
-void AliZDCv1::CreateGeometry()
-{
   //
-  // Create the geometry for the Zero Degree Calorimeter version 1
-  // -- Author :    E Scomparin
-  //
-  //Begin_Html
-  /*
-    <img src="picts/AliZDCv1.gif">
-  */
-  //End_Html
-  //Begin_Html
-  /*
-    <img src="picts/AliZDCv1Tree.gif">
-  */
-  //End_Html
-
-  // The following variables were illegaly initialized in zdc_init.
-  // These variables should become data members of this class
-  // once zdc_init has been converted
-  //* Initialize COMMON block ZDC_CGEOM
-  //*
-  
-  const Int_t NZPTX=4;
-  const Int_t NZPTY=1;
-  const Int_t NZNTX=2;
-  const Int_t NZNTY=2;
-  
-  Float_t HDZN[3]  = {4.0,4.0,50.0};
-  Float_t HDZP[3]  = {10.0,6.0,75.0};
-  // Coordinates of the center of the ZDC front face in the MRS
-  Float_t ZNPOS[3] = {-0.5,0.,11613.};
-  Float_t ZPPOS[3] = {-21.0,0.,11563.};
-  Float_t FIZN[3]  = {0.,0.01825,50.0};
-  Float_t FIZP[3]  = {0.,0.01825,75.0};
-  Float_t GRZN[3]  = {0.025,0.025,50.0};
-  Float_t GRZP[3]  = {0.040,0.040,75.0};
-  Int_t NCEN[3]    = {11,11,0};
-  Int_t NCEP[3]    = {10,10,0};
-  
-  Float_t angle;
-  Float_t zq, conpar[9], tubpar[3];
-  Int_t im1, im2;
-  Float_t zd1, zd2;
-  
-  
-  Int_t *idtmed = fIdtmed->GetArray()-799;
-  
-  // -- Mother of the ZDC 
-  conpar[0] = 0.;
-  conpar[1] = 360.;
-  conpar[2] = 2.;
-  conpar[3] = 1920.;
-  conpar[4] = 0.;
-  conpar[5] = 55.;
-  conpar[6] = 13060.;
-  conpar[7] = 0.;
-  conpar[8] = 55.;
-  gMC->Gsvolu("ZDC ", "PCON", idtmed[891], conpar, 9);
-  gMC->Gspos("ZDC ", 1, "ALIC", 0., 0., 0., 0, "ONLY");
-  // -- FIRST SECTION OF THE BEAM PIPE (from compensator dipole to 
-  //    beginning of D1) 
-  
-  zd1 = 1920.;
-  
-  tubpar[0] = 2.3;
-  tubpar[1] = 2.5;
-  tubpar[2] = 1961.75;
-  gMC->Gsvolu("P001", "TUBE", idtmed[851], tubpar, 3);
-  gMC->Gspos("P001", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
-  
-  //-- SECOND SECTION OF THE BEAM PIPE (FROM THE END OF D1 TO THE BEGINNING OF
-  //    D2) 
-  
-  zd1 = 6316.+472.5;
-  
-  tubpar[0] = 7.3/2.;
-  tubpar[1] = 7.7/2.;
-  tubpar[2] = 90.*0.5;
-  gMC->Gsvolu("P002", "TUBE", idtmed[851], tubpar, 3);
-  gMC->Gspos("P002", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
-  
-  zd1 += tubpar[2] * 2.;
-  
-  tubpar[0] = 7.3/2.;
-  tubpar[1] = 7.7/2.;
-  tubpar[2] = 10.*0.5;
-  gMC->Gsvolu("P003", "TUBE", idtmed[851], tubpar, 3);
-  gMC->Gspos("P003", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
-  
-  zd1 += tubpar[2] * 2.;
-  
-  conpar[0] = 3.16/2.;
-  conpar[1] = 7.3/2.;
-  conpar[2] = 7.7/2.;
-  conpar[3] = 9.8/2.;
-  conpar[4] = 10.0/2.;
-  gMC->Gsvolu("P004", "CONE", idtmed[851], conpar, 5);
-  gMC->Gspos("P004", 1, "ZDC ", 0., 0., conpar[0] + zd1, 0, "ONLY");
-  
-  zd1 += conpar[0] * 2.;
-  
-  tubpar[0] = 9.8/2.;
-  tubpar[1] = 10.0/2;
-  tubpar[2] = 490./2.;
-  gMC->Gsvolu("P005", "TUBE", idtmed[851], tubpar, 3);
-  gMC->Gspos("P005", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
-  
-  zd1 += tubpar[2] * 2.;
-  
-  conpar[0] = 30./2.;
-  conpar[1] = 9.8/2.;
-  conpar[2] = 10.0/2.;
-  conpar[3] = 20.4/2.;
-  conpar[4] = 20.6/2.;
-  gMC->Gsvolu("P006", "CONE", idtmed[851], conpar, 5);
-  gMC->Gspos("P006", 1, "ZDC ", 0., 0., conpar[0] + zd1, 0, "ONLY");
-  
-  zd1 += conpar[0] * 2.;
-  
-  tubpar[0] = 20.4/2.;
-  tubpar[1] = 20.6/2.;
-  tubpar[2] = 150./2.;
-  gMC->Gsvolu("P007", "TUBE", idtmed[851], tubpar, 3);
-  gMC->Gspos("P007", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
-  
-  zd1 += tubpar[2] * 2.;
-  
-  conpar[0] = 13.6/2.;
-  conpar[1] = 20.4/2.;
-  conpar[2] = 20.6/2.;
-  conpar[3] = 25.2/2.;
-  conpar[4] = 25.4/2.;
-  gMC->Gsvolu("P008", "CONE", idtmed[851], conpar, 5);
-  gMC->Gspos("P008", 1, "ZDC ", 0., 0., conpar[0] + zd1, 0, "ONLY");
-  
-  zd1 += conpar[0] * 2.;
-  
-  tubpar[0] = 25.2/2.;
-  tubpar[1] = 25.4/2.;
-  tubpar[2] = 205.8/2.;
-  gMC->Gsvolu("P009", "TUBE", idtmed[851], tubpar, 3);
-  gMC->Gspos("P009", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
-  
-  zd1 += tubpar[2] * 2.;
-  
-  tubpar[0] = 43.8/2.;
-  tubpar[1] = 44.0/2.;
-  tubpar[2] = 500./2.;
-  gMC->Gsvolu("P010", "TUBE", idtmed[851], tubpar, 3);
-  gMC->Gspos("P010", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
-  
-  zd1 += tubpar[2] * 2.;
-  
-  tubpar[0] = 31.8/2.;
-  tubpar[1] = 32.0/2.;
-  tubpar[2] = 757.5/2.;
-  gMC->Gsvolu("P011", "TUBE", idtmed[851], tubpar, 3);
-  gMC->Gspos("P011", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
-  
-  zd1 += tubpar[2] * 2.;
-  
-  conpar[0] = 22.7/2.;
-  conpar[1] = 31.8/2.;
-  conpar[2] = 32.0/2.;
-  conpar[3] = 39.8/2.;
-  conpar[4] = 40.0/2.;
-  gMC->Gsvolu("P012", "CONE", idtmed[851], conpar, 5);
-  gMC->Gspos("P012", 1, "ZDC ", 0., 0., conpar[0] + zd1, 0, "ONLY");
-  
-  zd1 += conpar[0] * 2.;
-  
-  tubpar[0] = 39.8/2.;
-  tubpar[1] = 40.0/2.;
-  tubpar[2] = 100./2.;
-  gMC->Gsvolu("P013", "TUBE", idtmed[851], tubpar, 3);
-  gMC->Gspos("P013", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
-  
-  zd1 += tubpar[2] * 2.;
-  
-  tubpar[0] = 39.8/2.;
-  tubpar[1] = 40.0/2.;
-  tubpar[2] = 600./2.;
-  gMC->Gsvolu("P014", "TUBE", idtmed[851], tubpar, 3);
-  gMC->Gspos("P014", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
-  
-  zd1 += tubpar[2] * 2.;
-  
-  conpar[0] = 28.4/2.;
-  conpar[1] = 39.8/2.;
-  conpar[2] = 40.0/2.;
-  conpar[3] = 49.8/2.;
-  conpar[4] = 50.0/2.;
-  gMC->Gsvolu("P015", "CONE", idtmed[851], conpar, 5);
-  gMC->Gspos("P015", 1, "ZDC ", 0., 0., conpar[0] + zd1, 0, "ONLY");
-  
-  zd1 += conpar[0] * 2.;
-  
-  tubpar[0] = 49.8/2.;
-  tubpar[1] = 50.0/2.;
-  tubpar[2] = 100./2.;
-  gMC->Gsvolu("P016", "TUBE", idtmed[851], tubpar, 3);
-  gMC->Gspos("P016", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
-  
-  zd1 += tubpar[2] * 2.;
-  
-  tubpar[0] = 49.8/2.;
-  tubpar[1] = 50.0/2.;
-  tubpar[2] = 600./2.;
-  gMC->Gsvolu("P017", "TUBE", idtmed[851], tubpar, 3);
-  gMC->Gspos("P017", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
-  
-  zd1 += tubpar[2] * 2.;
-  
-  conpar[0] = 28.4/2.;
-  conpar[1] = 49.8/2.;
-  conpar[2] = 50.0/2.;
-  conpar[3] = 59.8/2.;
-  conpar[4] = 60.0/2.;
-  gMC->Gsvolu("P018", "CONE", idtmed[851], conpar, 5);
-  gMC->Gspos("P018", 1, "ZDC ", 0., 0., conpar[0] + zd1, 0, "ONLY");
-  
-  zd1 += conpar[0] * 2.;
-  
-  tubpar[0] = 59.8/2.;
-  tubpar[1] = 60.0/2.;
-  tubpar[2] = 50./2.;
-  gMC->Gsvolu("P019", "TUBE", idtmed[851], tubpar, 3);
-  gMC->Gspos("P019", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
-  
-  zd1 += tubpar[2] * 2.;
-  
-  tubpar[0] = 59.8/2.;
-  tubpar[1] = 60.0/2.;
-  tubpar[2] = 800./2.;
-  gMC->Gsvolu("P020", "TUBE", idtmed[851], tubpar, 3);
-  gMC->Gspos("P020", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
-  
-  zd1 += tubpar[2] * 2.;
-  
-  tubpar[0] = 0.;
-  tubpar[1] = 60.0/2.;
-  tubpar[2] = 0.2/2.;
-  gMC->Gsvolu("P021", "TUBE", idtmed[851], tubpar, 3);
-  gMC->Gspos("P021", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
-  
-  zd1 += tubpar[2] * 2.;
-  
-  tubpar[0] = 0.;
-  tubpar[1] = 4.4/2.;
-  tubpar[2] = 0.2/2.;
-  gMC->Gsvolu("Q021", "TUBE", idtmed[889], tubpar, 3);
-  tubpar[0] = 0.;
-  tubpar[1] = 7.0/2.;
-  tubpar[2] = 0.2/2.;
-  gMC->Gsvolu("R021", "TUBE", idtmed[889], tubpar, 3);
-  // -- POSITION Q021 INSIDE P021 
-  gMC->Gspos("Q021", 1, "P021", -7.7, 0., 0., 0, "ONLY");
-  // -- POSITION R020 INSIDE P020 
-  gMC->Gspos("R021", 1, "P021", 7.7, 0., 0., 0, "ONLY");
-  
-  // -- BEAM PIPES BETWEEN END OF CONICAL PIPE AND BEGINNING OF D2 
-  tubpar[0] = 4.0/2.;
-  tubpar[1] = 4.4/2.;
-  tubpar[2] = 645.*0.5;
-  gMC->Gsvolu("P022", "TUBE", idtmed[851], tubpar, 3);
-  tubpar[0] = 7.0/2.;
-  tubpar[1] = 7.4/2.;
-  tubpar[2] = 645.*0.5;
-  gMC->Gsvolu("P023", "TUBE", idtmed[851], tubpar, 3);
-  
-  // -- ROTATE PIPES 
-  AliMatrix(im1, 90.-0.071, 0., 90., 90., .071, 180.);
-  angle = .071*kDegrad;
-  gMC->Gspos("P022", 1, "ZDC ", TMath::Sin(angle) * 322.5 - 9.7 + 
-              TMath::Sin(angle) * 472.5, 0., tubpar[2] + zd1, im1, "ONLY");
-  AliMatrix(im2, 90.+0.071, 0., 90., 90., .071, 0.);
-  gMC->Gspos("P023", 1, "ZDC ", 9.7 - TMath::Sin(angle) * 322.5, 0., 
-              tubpar[2] + zd1, im2, "ONLY");
-  
-  // --  END OF BEAM PIPE VOLUME DEFINITION. MAGNET DEFINITION FOLLOWS 
-  //     (LHC OPTICS 6) 
-  
-  // -- COMPENSATOR DIPOLE (MCBWA) 
-  //     GAP (VACUUM WITH MAGNETIC FIELD) 
-  
-  tubpar[0] = 0.;
-  tubpar[1] = 4.5;
-  tubpar[2] = 190./2.;
-  gMC->Gsvolu("MCBW", "TUBE", idtmed[890], tubpar, 3);
-  gMC->Gspos("MCBW", 1, "ZDC ", 0., 0., tubpar[2] + 1920., 0, "ONLY");
-  
-  // --  YOKE (IRON WITHOUT MAGNETIC FIELD) 
-  
-  tubpar[0] = 4.5;
-  tubpar[1] = 55.;
-  tubpar[2] = 190./2.;
-  gMC->Gsvolu("YMCB", "TUBE", idtmed[851], tubpar, 3);
-  gMC->Gspos("YMCB", 1, "ZDC ", 0., 0., tubpar[2] + 1920., 0, "ONLY");
-  
-  // -- INNER TRIPLET 
-  
-  zq = 2300.;
-  
-  // -- DEFINE MQXL AND MQX QUADRUPOLE ELEMENT 
-  
-  //     MQXL 
-  // --  GAP (VACUUM WITH MAGNETIC FIELD) 
-  
-  tubpar[0] = 0.;
-  tubpar[1] = 3.5;
-  tubpar[2] = 630./2.;
-  gMC->Gsvolu("MQXL", "TUBE", idtmed[890], tubpar, 3);
-  
-  // --  YOKE 
-  
-  tubpar[0] = 3.5;
-  tubpar[1] = 22.;
-  tubpar[2] = 630./2.;
-  gMC->Gsvolu("YMQL", "TUBE", idtmed[851], tubpar, 3);
-  
-  gMC->Gspos("MQXL", 1, "ZDC ", 0., 0., tubpar[2] + zq, 0, "ONLY");
-  gMC->Gspos("YMQL", 1, "ZDC ", 0., 0., tubpar[2] + zq, 0, "ONLY");
-  
-  gMC->Gspos("MQXL", 2, "ZDC ", 0., 0., tubpar[2] + zq + 2430., 0, "ONLY");
-  gMC->Gspos("YMQL", 2, "ZDC ", 0., 0., tubpar[2] + zq + 2430., 0, "ONLY");
-  
-  // --  MQX 
-  // --  GAP (VACUUM WITH MAGNETIC FIELD) 
-  
-  tubpar[0] = 0.;
-  tubpar[1] = 3.5;
-  tubpar[2] = 550./2.;
-  gMC->Gsvolu("MQX ", "TUBE", idtmed[890], tubpar, 3);
-  
-  // --  YOKE 
-  
-  tubpar[0] = 3.5;
-  tubpar[1] = 22.;
-  tubpar[2] = 550./2.;
-  gMC->Gsvolu("YMQ ", "TUBE", idtmed[851], tubpar, 3);
-  
-  gMC->Gspos("MQX ", 1, "ZDC ", 0., 0., tubpar[2] + zq + 880.,  0, "ONLY");
-  gMC->Gspos("YMQ ", 1, "ZDC ", 0., 0., tubpar[2] + zq + 880.,  0, "ONLY");
-  
-  gMC->Gspos("MQX ", 2, "ZDC ", 0., 0., tubpar[2] + zq + 1530., 0, "ONLY");
-  gMC->Gspos("YMQ ", 2, "ZDC ", 0., 0., tubpar[2] + zq + 1530., 0, "ONLY");
-  
-  // -- SEPARATOR DIPOLE D1 
-  
-  zd1 = 5843.5;
-  
-  // --  GAP (VACUUM WITH MAGNETIC FIELD) 
-  
-  tubpar[0] = 0.;
-  tubpar[1] = 4.5;
-  tubpar[2] = 945/2.;
-  gMC->Gsvolu("D1  ", "TUBE", idtmed[890], tubpar, 3);
-  
-  // --  YOKE 
-  
-  tubpar[0] = 0.;
-  tubpar[1] = 55.;
-  tubpar[2] = 945/2.;
-  gMC->Gsvolu("YD1 ", "TUBE", idtmed[851], tubpar, 3);
-  
-  gMC->Gspos("YD1 ", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
-  gMC->Gspos("D1  ", 1, "YD1 ", 0., 0., 0., 0, "ONLY");
-  
-  // -- DIPOLE D2 
-  
-  zd2 = 12113.2;
-  
-  // --  GAP (VACUUM WITH MAGNETIC FIELD) 
-  
-  tubpar[0] = 0.;
-  tubpar[1] = 4.5;
-  tubpar[2] = 945./2.;
-  gMC->Gsvolu("D2  ", "TUBE", idtmed[890], tubpar, 3);
-  
-  // --  YOKE 
-  
-  tubpar[0] = 0.;
-  tubpar[1] = 55.;
-  tubpar[2] = 945./2.;
-  gMC->Gsvolu("YD2 ", "TUBE", idtmed[851], tubpar, 3);
-  
-  gMC->Gspos("YD2 ", 1, "ZDC ", 0., 0., tubpar[2] + zd2, 0, "ONLY");
-  
-  gMC->Gspos("D2  ", 1, "YD2 ", -9.7, 0., 0., 0, "ONLY");
-  gMC->Gspos("D2  ", 2, "YD2 ",  9.7, 0., 0., 0, "ONLY");
-  
-  // -- END OF MAGNET DEFINITION 
-  
-  // ----------------- Hadronic calorimeters -------------------- * 
-  
-  // Neutron calorimeter 
-  
-  gMC->Gsvolu("ZNEU", "BOX ", idtmed[800], HDZN, 3); // Passive material  
-  gMC->Gsvolu("ZNFI", "TUBE", idtmed[802], FIZN, 3); // Active material
-  gMC->Gsvolu("ZNGR", "BOX ", idtmed[889], GRZN, 3); // Empty grooves 
-  
-  // Divide ZNEU in towers 
-  // (for hits purposes) 
-  
-  gMC->Gsdvn("ZNTX", "ZNEU", NZNTX, 1); // x-tower 
-  gMC->Gsdvn("ZN1 ", "ZNTX", NZNTY, 2); // y-tower
-  
-  // Divide ZNEU in minitowers 
-  // (NCEN(1)= NUMBER OF FIBERS PER TOWER ALONG X-AXIS, 
-  //  NCEN(2)= NUMBER OF FIBERS PER TOWER ALONG Y-AXIS) 
-  // (one fiber per minitower) 
-  
-  gMC->Gsdvn("ZNSL", "ZN1 ", NCEN[1], 2); // Slices 
-  gMC->Gsdvn("ZNST", "ZNSL", NCEN[0], 1); // Sticks
-  
-  // --- Position the empty grooves in the sticks 
-  gMC->Gspos("ZNGR", 1, "ZNST", 0., 0., 0., 0, "ONLY");
-  // --- Position the fibers in the grooves 
-  gMC->Gspos("ZNFI", 1, "ZNGR", 0., 0., 0., 0, "ONLY");
-  // --- Position the neutron calorimeter in ZDC 
-  gMC->Gspos("ZNEU", 1, "ZDC ", ZNPOS[0], ZNPOS[1], ZNPOS[2] + HDZN[2], 0, "ONLY");
-  
-  // Proton calorimeter 
-  
-  gMC->Gsvolu("ZPRO", "BOX ", idtmed[801], HDZP, 3); // Passive material
-  gMC->Gsvolu("ZPFI", "TUBE", idtmed[802], FIZP, 3); // Active material 
-  gMC->Gsvolu("ZPGR", "BOX ", idtmed[889], GRZP, 3); // Empty grooves
-  
-  // Divide ZPRO in towers 
-  // (for hits purposes) 
-  
-  gMC->Gsdvn("ZPTX", "ZPRO", NZPTX, 1); // x-tower 
-  gMC->Gsdvn("ZP1 ", "ZPTX", NZPTY, 2); // y-tower
-  
-  
-  // Divide ZPRO in minitowers 
-  // (NCEP[0]= NUMBER OF FIBERS ALONG X-AXIS PER MINITOWER, 
-  //  NCEP[1]= NUMBER OF FIBERS ALONG Y-AXIS PER MINITOWER) 
-  // (one fiber per minitower) 
-  
-  gMC->Gsdvn("ZPSL", "ZP1 ", NCEP[1], 2); // Slices 
-  gMC->Gsdvn("ZPST", "ZPSL", NCEP[0], 1); // Sticks
-  
-  // --- Position the empty grooves in the sticks 
-  gMC->Gspos("ZPGR", 1, "ZPST", 0., 0., 0., 0, "ONLY");
-  // --- Position the fibers in the grooves 
-  gMC->Gspos("ZPFI", 1, "ZPGR", 0., 0., 0., 0, "ONLY");
-  // --- Position the proton calorimeter in ZDC 
-  gMC->Gspos("ZPRO", 1, "ZDC ", ZPPOS[0], ZPPOS[1], ZPPOS[2] + HDZP[2], 0, "ONLY");
-  
-}
-//_____________________________________________________________________________
-void AliZDCv1::DrawModule()
-{
-  //
-  // Draw a shaded view of the Zero Degree Calorimeter version 1
-  //
-
-  // Set everything unseen
-  gMC->Gsatt("*", "seen", -1);
-  // 
-  // Set ALIC mother transparent
-  gMC->Gsatt("ALIC","SEEN",0);
-  //
-  // Set the volumes visible
-  gMC->Gsatt("ZDC","SEEN",0);
-  gMC->Gsatt("P001","SEEN",1);
-  gMC->Gsatt("P002","SEEN",1);
-  gMC->Gsatt("P003","SEEN",1);
-  gMC->Gsatt("P004","SEEN",1);
-  gMC->Gsatt("P005","SEEN",1);
-  gMC->Gsatt("P006","SEEN",1);
-  gMC->Gsatt("P007","SEEN",1);
-  gMC->Gsatt("P008","SEEN",1);
-  gMC->Gsatt("P009","SEEN",1);
-  gMC->Gsatt("P010","SEEN",1);
-  gMC->Gsatt("P011","SEEN",1);
-  gMC->Gsatt("P012","SEEN",1);
-  gMC->Gsatt("P013","SEEN",1);
-  gMC->Gsatt("P014","SEEN",1);
-  gMC->Gsatt("P015","SEEN",1);
-  gMC->Gsatt("P016","SEEN",1);
-  gMC->Gsatt("P017","SEEN",1);
-  gMC->Gsatt("P018","SEEN",1);
-  gMC->Gsatt("P019","SEEN",1);
-  gMC->Gsatt("P020","SEEN",1);
-  gMC->Gsatt("P021","SEEN",1);
-  gMC->Gsatt("Q021","SEEN",1);
-  gMC->Gsatt("R021","SEEN",1);
-  gMC->Gsatt("P022","SEEN",1);
-  gMC->Gsatt("P023","SEEN",1);
-  gMC->Gsatt("D1  ","SEEN",1);
-  gMC->Gsatt("YD1 ","SEEN",1);
-  gMC->Gsatt("D2  ","SEEN",1);
-  gMC->Gsatt("YD2 ","SEEN",1);
-  gMC->Gsatt("MCBW","SEEN",1);
-  gMC->Gsatt("YMCB","SEEN",1);
-  gMC->Gsatt("MQXL","SEEN",1);
-  gMC->Gsatt("YMQL","SEEN",1);
-  gMC->Gsatt("MQX","SEEN",1);
-  gMC->Gsatt("YMQ","SEEN",1);
-  gMC->Gsatt("D1","SEEN",1);
-  gMC->Gsatt("YD1","SEEN",1);
-  gMC->Gsatt("D2","SEEN",1);
-  gMC->Gsatt("YD2","SEEN",1);
-  gMC->Gsatt("ZNEU","SEEN",0);
-  gMC->Gsatt("ZNFI","SEEN",0);
-  gMC->Gsatt("ZNGR","SEEN",0);
-  gMC->Gsatt("ZNTX","SEEN",0);
-  gMC->Gsatt("ZN1 ","COLO",2); 
-  gMC->Gsatt("ZN1 ","SEEN",1);
-  gMC->Gsatt("ZNSL","SEEN",0);
-  gMC->Gsatt("ZNST","SEEN",0);
-  gMC->Gsatt("ZPRO","SEEN",0);
-  gMC->Gsatt("ZPFI","SEEN",0);
-  gMC->Gsatt("ZPGR","SEEN",0);
-  gMC->Gsatt("ZPTX","SEEN",0);
-  gMC->Gsatt("ZP1 ","SEEN",1);
-  gMC->Gsatt("ZPSL","SEEN",0);
-  gMC->Gsatt("ZPST","SEEN",0);
-  
-  //
-  gMC->Gdopt("hide", "on");
-  gMC->Gdopt("shad", "on");
-  gMC->Gsatt("*", "fill", 7);
-  gMC->SetClipBox(".");
-  gMC->SetClipBox("*", 0, 100, -100, 100, 12000, 16000);
-  gMC->DefaultRange();
-  gMC->Gdraw("alic", 40, 30, 0, 488, 220, .07, .07);
-  gMC->Gdhead(1111, "Zero Degree Calorimeter Version 1");
-  gMC->Gdman(18, 4, "MAN");
-}
-
-//_____________________________________________________________________________
-void AliZDCv1::CreateMaterials()
-{
-  //
-  // Create Materials for the Zero Degree Calorimeter
-  //
-  // Origin    : E. Scomparin 
-  
-  Int_t *idtmed = fIdtmed->GetArray()-799;
-  
-  Float_t dens, ubuf[1], wmat[2];
-  Int_t isvol_active;
-  Float_t a[2];
-  Int_t i;
-  Float_t z[2], epsil=0.001, stmin=0.01;
-  Int_t isvol;
-  Float_t fieldm = gAlice->Field()->Max();
-  Int_t inofld;
-  Float_t deemax=-1;
-  Float_t tmaxfd=gAlice->Field()->Max();
-  Int_t isxfld = gAlice->Field()->Integ();
-  Float_t stemax;
-  
-  // --- Store in UBUF r0 for nuclear radius calculation R=r0*A**1/3 
-  
-  // --- Tungsten 
-  ubuf[0] = 1.11;
-  AliMaterial(1, "TUNG", 183.85, 74., 19.3, .35, 10.3, ubuf, 1);
-  
-  // --- Brass (CuZn) 
-  dens = 8.48;
-  a[0] = 63.546;
-  a[1] = 65.39;
-  z[0] = 29.;
-  z[1] = 30.;
-  wmat[0] = .63;
-  wmat[1] = .37;
-  AliMixture(2, "BRASS               ", a, z, dens, 2, wmat);
-  
-  // --- SiO2 
-  dens = 2.64;
-  a[0] = 28.086;
-  a[1] = 15.9994;
-  z[0] = 14.;
-  z[1] = 8.;
-  wmat[0] = 1.;
-  wmat[1] = 2.;
-  AliMixture(3, "SIO2                ", a, z, dens, -2, wmat);
-  
-  // --- Lead 
-  ubuf[0] = 1.12;
-  AliMaterial(4, "LEAD", 207.19, 82., 11.35, .56, 18.5, ubuf, 1);
-  
-  // --- Copper 
-  ubuf[0] = 1.1;
-  AliMaterial(5, "COPP", 63.54, 29., 8.96, 1.4, 0., ubuf, 1);
-  
-  // --- Tantalum 
-  ubuf[0] = 1.1;
-  AliMaterial(6, "TANT", 180.95, 73., 16.65, .4, 11.9, ubuf, 1);
-  
-  // Steel still to be added 
-  
-  // --- Iron 
-  ubuf[0] = 1.1;
-  AliMaterial(52, "IRON", 55.85, 26., 7.87, 1.76, 0., ubuf, 1);
-  
-  // --- Vacuum (no magnetic field) 
-  AliMaterial(90, "VOID", 1e-16, 1e-16, 1e-16, 1e16, 1e16, ubuf,0);
-  
-  // --- Vacuum (magnetic field) 
-  AliMaterial(91, "VOIM", 1e-16, 1e-16, 1e-16, 1e16, 1e16, ubuf,0);
-  
-  // --- Air non magnetic 
-  AliMaterial(92, "Air    $", 14.61, 7.3, .001205, 30420., 67500., ubuf, 0);
-  
-  // ---  Definition of tracking media: 
-  
-  // --- Tungsten = 801 ; 
-  // --- Brass = 802 ; 
-  // --- Fibers (SiO2) = 803 ; 
-  // --- Lead = 804 ; 
-  // --- Copper = 805 ; 
-  // --- Tantalum = 806 ; 
-  // --- Steel = 851 ; 
-  // --- Iron = 852 ; 
-  // --- Vacuum (no field) = 890 
-  // --- Vacuum (with field) = 891 
-  // --- Air   (no field) = 892 
-  
-  
-  // --- Tracking media parameters 
-  epsil  = .01;
-  stemax = 1.;
-  isvol  = 0;
-  isvol_active = 1;
-  inofld = 0;
-  fieldm = 0.;
-  
-  AliMedium(1, "ZW", 1, isvol_active, inofld, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
-  AliMedium(2, "ZBRASS", 2, isvol_active, inofld, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
-  AliMedium(3, "ZSIO2", 3, isvol_active, inofld, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
-  AliMedium(4, "ZLEAD", 4, isvol_active, inofld, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
-  AliMedium(5, "ZCOPP", 5, isvol_active, inofld, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
-  AliMedium(6, "ZTANT", 6, isvol_active, inofld, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
-  AliMedium(52, "ZIRON", 52, isvol, inofld, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
-  AliMedium(90, "ZVOID", 90, isvol, inofld, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
-  AliMedium(92, "Air", 92, 0, inofld, fieldm, tmaxfd, stemax,deemax, epsil, stmin);
-  
-  fieldm = 45.;
-  //    AliMedium(91, "ZVOIM", 91, isvol, isxfld, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
-  AliMedium(91, "ZVOIM", 91, isvol, isxfld, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
-  
-  // Thresholds for showering in the ZDCs 
-  
-  i = 801;
-  gMC->Gstpar(idtmed[i-1], "CUTGAM", .01);
-  gMC->Gstpar(idtmed[i-1], "CUTELE", .01);
-  gMC->Gstpar(idtmed[i-1], "CUTNEU", .1);
-  gMC->Gstpar(idtmed[i-1], "CUTHAD", .1);
-  i = 802;
-  gMC->Gstpar(idtmed[i-1], "CUTGAM", .01);
-  gMC->Gstpar(idtmed[i-1], "CUTELE", .01);
-  gMC->Gstpar(idtmed[i-1], "CUTNEU", .1);
-  gMC->Gstpar(idtmed[i-1], "CUTHAD", .1);
-  
-  // Avoid too detailed showering along the beam line 
-  
-  i = 852;
-  gMC->Gstpar(idtmed[i-1], "CUTGAM", .1);
-  gMC->Gstpar(idtmed[i-1], "CUTELE", .1);
-  gMC->Gstpar(idtmed[i-1], "CUTNEU", 1.);
-  gMC->Gstpar(idtmed[i-1], "CUTHAD", 1.);
-  
-  // Avoid interaction in fibers (only energy loss allowed) 
-  i = 803;
-  gMC->Gstpar(idtmed[i-1], "DCAY", 0.);
-  gMC->Gstpar(idtmed[i-1], "MULS", 0.);
-  gMC->Gstpar(idtmed[i-1], "PFIS", 0.);
-  gMC->Gstpar(idtmed[i-1], "MUNU", 0.);
-  gMC->Gstpar(idtmed[i-1], "LOSS", 1.);
-  gMC->Gstpar(idtmed[i-1], "PHOT", 0.);
-  gMC->Gstpar(idtmed[i-1], "COMP", 0.);
-  gMC->Gstpar(idtmed[i-1], "PAIR", 0.);
-  gMC->Gstpar(idtmed[i-1], "BREM", 0.);
-  gMC->Gstpar(idtmed[i-1], "DRAY", 0.);
-  gMC->Gstpar(idtmed[i-1], "ANNI", 0.);
-  gMC->Gstpar(idtmed[i-1], "HADR", 0.);
 }
 
 ClassImp(AliZDChit)
@@ -968,12 +211,18 @@ AliZDChit::AliZDChit(Int_t shunt, Int_t track, Int_t *vol, Float_t *hits):
   AliHit(shunt, track)
 {
   //
-  // Add a Zero Degree Calorimeter hit
+  // Add a ZDC hit
   //
   Int_t i;
-  for (i=0;i<4;i++) fVolume[i] = vol[i];
-  fX=hits[0];
-  fY=hits[1];
-  fZ=hits[2];
-  fEnergy=hits[3];
+  for(i=0; i<2; i++) fVolume[i] = vol[i];
+  fX = hits[0];
+  fY = hits[1];
+  fZ = hits[2];
+  fPrimKinEn = hits[3];
+  fXImpact = hits[4];
+  fYImpact = hits[5];
+  fSFlag = hits[6];
+  fLightPMQ = hits[7];
+  fLightPMC = hits[8];
+  fEnergy = hits[9]; 
 }
index f9ab3cb..e068458 100644 (file)
@@ -1,12 +1,12 @@
-#ifndef ZDC_H
-#define ZDC_H
+#ifndef ALIZDC_H
+#define ALIZDC_H
 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
  * See cxx source for full Copyright notice                               */
 
 /* $Id$ */
 
 ////////////////////////////////////////////////
-//  Manager and hits classes for set:ZDC      //
+//  Manager and hits classes for set ZDC      //
 ////////////////////////////////////////////////
  
 #include "AliDetector.h"
@@ -19,51 +19,78 @@ public:
   AliZDC();
   AliZDC(const char *name, const char *title);
   virtual      ~AliZDC() {}
-  virtual void  AddHit(Int_t, Int_t*, Float_t*);
+  virtual void  AddHit(Int_t track, Int_t *vol, Float_t *hits);
   virtual void  BuildGeometry();
   virtual void  CreateGeometry() {}
   virtual void  CreateMaterials() {}
-  Int_t         DistancetoPrimitive(Int_t px, Int_t py);
+  Int_t          DistancetoPrimitive(Int_t px, Int_t py);
   virtual Int_t IsVersion() const =0;
-  virtual void  SetBeam(Int_t beam, Float_t fx, Float_t fy, Float_t sx, Float_t sy,
-                       Float_t div, Float_t angle, Int_t cross);
-  virtual void  SetHijing(Int_t hij, Int_t hijf, Int_t hijsp, const char *file);
-  virtual void  SetVenus(Int_t hiv, Int_t hivf, Int_t hivsp, const char *file);
-  virtual void  SetKine(Int_t code, Float_t pmom, Float_t cx, Float_t cy, Float_t cz, Int_t type, Int_t fermi);
   virtual void  StepManager();
  
+protected:
+  // Parameters for ZDCs geometry
+  Float_t fDimZN[3];  // Dimensions of neutron detector
+  Float_t fDimZP[3];  // Dimensions of proton detector
+  Float_t fPosZN[3];  // Position of neutron detector
+  Float_t fPosZP[3];  // Position of proton detector
+  Float_t fFibZN[3];  // Fibers for neutron detector
+  Float_t fFibZP[3];  // Fibers for proton detector
+  Float_t fGrvZN[3];  // Grooves for neutron detector
+  Float_t fGrvZP[3];  // Grooves for proton detector
+  Int_t   fDivZN[3];  // Division for neutron detector
+  Int_t   fDivZP[3];  // Division for proton detector
+  Int_t   fTowZN[2];  // Tower for neutron detector
+  Int_t   fTowZP[2];  // Tower for proton detector
+
    ClassDef(AliZDC,1)  // Zero Degree Calorimeter base class
 };
-//____________________________________________________________________________ 
-class AliZDCv1 : public AliZDC {
 
-public:
-  AliZDCv1();
-  AliZDCv1(const char *name, const char *title);
-  virtual      ~AliZDCv1() {}
-  virtual void  CreateGeometry();
-  virtual void  CreateMaterials();
-  virtual Int_t IsVersion() const {return 1;}
-  virtual void  DrawModule();
-   ClassDef(AliZDCv1,1)  // Zero Degree Calorimeter version 1
-};
 //_____________________________________________________________________________
 class AliZDChit : public AliHit {
+
 public:
-  Int_t      fVolume[4];  //array of volumes
-  Float_t    fEnergy;     //Total energy deposited in eV
+  Int_t      fVolume[2];    //Array of volumes
+  Float_t    fX;           //X-coord. in the hall RS
+  Float_t    fY;           //Y-coord. in the hall RS
+  Float_t    fZ;           //Z-coord. in the hall RS
+  Float_t    fPrimKinEn;    //Primary particle energy
+  Float_t    fXImpact;      //x-coord. of the impact point over the ZDC
+  Float_t    fYImpact;      //y-coord. of the impact point over the ZDC
+  Float_t    fSFlag;        //Secondary flag
+  Float_t    fLightPMQ;     //Cerenkov light produced in each quadrant
+  Float_t    fLightPMC;     //Cerenkov light seen by the common PM
+  Float_t    fEnergy;       //Total energy deposited in eV
  
 public:
   AliZDChit() {}
   AliZDChit(Int_t shunt, Int_t track, Int_t *vol, Float_t *hits);
+  AliZDChit(AliZDChit* oldhit) {*this=*oldhit;}
   virtual ~AliZDChit() {}
-  ClassDef(AliZDChit,1)  // Hits for the Zero Degree Calorimeter
+  virtual Int_t GetVolume(Int_t i) {return fVolume[i];}
+  virtual Float_t GetLightPMQ() {return fLightPMQ;}
+  virtual Float_t GetLightPMC() {return fLightPMC;}
+  virtual Float_t GetEnergy() {return fEnergy;}
+  Int_t operator == (AliZDChit &quad) {
+     Int_t i;
+     if(fTrack!=quad.GetTrack()) return 0;
+     for(i=0; i<2; i++) if(fVolume[i]!=quad.GetVolume(i)) return 0;
+     return 1;
+  }
+  virtual AliZDChit& operator + (AliZDChit &quad) {
+     fLightPMQ+=quad.GetLightPMQ();
+     fLightPMC+=quad.GetLightPMC();
+     fEnergy+=quad.GetEnergy();
+     return *this;
+  }
+  virtual void Print(Option_t *) {
+     printf(" -> HIT: vol[0] =  %d vol[1] =  %d Track: %d \n" 
+            "  hit[3] = %f, hit[4] = %f, hit[5] = %f, SFlag = %f\n"
+           "  PMQLight = %f, PMCLight = %f, Energy %f\n ", 
+           fVolume[0],fVolume[1],fTrack,fPrimKinEn,fXImpact,fYImpact,
+           fSFlag,fLightPMQ,fLightPMC,fEnergy);
+  }
+
+  ClassDef(AliZDChit,1)  // Hits for the Zero Degree Calorimeters
 };
  
 #endif
diff --git a/ZDC/AliZDCf.F b/ZDC/AliZDCf.F
deleted file mode 100644 (file)
index 1d2d8b8..0000000
+++ /dev/null
@@ -1,1076 +0,0 @@
-*CMZ :          19/11/98  21.32.03  by  Federico Carminati
-*-- Author :
-C***********************************************************************
-C
-      SUBROUTINE ZDC_ADDANG(THETA1,PHI1,THETA2,PHI2,THETA3,PHI3)
-C
-C  This subroutine takes spherical polar angles THETA1 and PHI1
-C  and adds to them the direction PHI2 on a cone of half-opening angle
-C  THETA2 (= angle from cone axis to cone surface) to produce
-C  the new space angles THETA3 and PHI3. All angles are in
-C  degrees, with 0<=THETA<=180 and 0<=PHI<360. There is no
-C  other restriction on THETA1, PHI1, THETA2 or PHI2.
-C
-C             27-AUG-1992          S. Coutu
-C
-C***********************************************************************
-#undef CERNLIB_GEANT321_GCONSP_INC
-#include "geant321/gconsp.inc"
-      DOUBLE PRECISION THETA1,PHI1,THETA2,PHI2,THETA3,PHI3
-      DOUBLE PRECISION TEMP,CX,CY,CZ,CT1,ST1,CT2,ST2,
-     +     CP1,SP1,CP2,SP2,RTHETA3
-C
-      CT1=COS(THETA1*DEGRAD)
-      ST1=SIN(THETA1*DEGRAD)
-      CP1=COS(PHI1*DEGRAD)
-      SP1=SIN(PHI1*DEGRAD)
-      CT2=COS(THETA2*DEGRAD)
-      ST2=SIN(THETA2*DEGRAD)
-      CP2=COS(PHI2*DEGRAD)
-      SP2=SIN(PHI2*DEGRAD)
-      CX=CT1*CP1*ST2*CP2+ST1*CP1*CT2-SP1*ST2*SP2
-      CY=CT1*SP1*ST2*CP2+ST1*SP1*CT2+CP1*ST2*SP2
-      CZ=CT1*CT2-ST1*ST2*CP2
-C
-      RTHETA3=ACOS(CZ)
-      THETA3=RTHETA3*RADDEG
-      IF(THETA3.EQ.0.OR.THETA3.EQ.180.)THEN
-         PHI3=0.
-      ELSE
-         TEMP=CX/SIN(RTHETA3)
-         IF(TEMP.GT.1.)TEMP=1.
-         IF(TEMP.LT.-1.)TEMP=-1.
-         PHI3=ACOS(TEMP)*RADDEG
-         IF(CY.LT.0.)PHI3=360.-PHI3
-      ENDIF
-*
-      END
-
-*CMZ :          21/11/98  17.33.14  by  Federico Carminati
-*-- Author :
-C==================================================================
-      SUBROUTINE ZDC_EFERMI(ID)
-*
-#include "zdc_common.inc"
-#undef CERNLIB_GEANT321_GCONSP_INC
-#include "geant321/gconsp.inc"
-      DIMENSION RNDM(3)
-*
-      CALL GRNDM(RNDM,3)
-*
-      IF(ID.EQ.14)THEN
-         DO I=1,200
-            IF(RNDM(3).GE.PROBINTP(I-1).AND.RNDM(3).LT.PROBINTP(I))GO TO
-     $           10
-         END DO
-      ELSE IF(ID.EQ.13) THEN
-         DO I=1,200
-            IF(RNDM(3).GE.PROBINTN(I-1).AND.RNDM(3).LT.PROBINTN(I))GO TO
-     $           10
-         END DO
-      ENDIF
-*
-   10 PIPPO=PP(I)+0.001
-      PHI=TWOPI*RNDM(1)
-      COST=1.-2*RNDM(2)
-      TET=ACOS(COST)
-      DDP(1)=PIPPO*SIN(TET)*COS(PHI)
-      DDP(2)=PIPPO*SIN(TET)*SIN(PHI)
-      DDP(3)=PIPPO*COST
-*
-      END
-
-*CMZ :          23/02/99  07.53.48  by  Federico Carminati
-*CMZ :  2.03/01 06/08/98  10.13.59  by  Federico Carminati
-*-- Author :   E.SCOMPARIN, 13/05/1996.
-      SUBROUTINE ZDC_END
-C
-C *** TERMINATION OF THE ZDC SIMULATION AT THE END OF A RUN ***
-C
-C CALLED BY : SXEND
-C ORIGIN    : E. SCOMPARIN
-C
-C
-*      CALL HROUT(0,ICYCLE,' ')
-*      CALL HREND('ALIZ')
-*      CLOSE(1)
-
-      PRINT 10000
-10000 FORMAT(1H /1H ,36('*'),' ZDC_END  ',36('*')/
-     $ 1H ,20X,'ZDC simulation package terminated'/
-     $ 1H ,80('*'))
-*
-      END
-
-*CMZ :          23/02/99  07.53.48  by  Federico Carminati
-*CMZ :  2.03/01 07/08/98  09.48.28  by  Federico Carminati
-*-- Author :   E.SCOMPARIN, 13/05/1996.
-      SUBROUTINE ZDC_EVE
-C
-C *** TERMINATION OF THE ZDC SIMULATION AFTER EACH EVENT ***
-C
-C CALLED BY : SXEVE
-C ORIGIN    : E. SCOMPARIN
-C
-C --  RETRIEVE HITS INFORMATION FOR THE CURRENT EVENT
-#undef CERNLIB_GEANT321_GCFLAG_INC
-#include "geant321/gcflag.inc"
-#include "zdc_common.inc"
-*
-      INTEGER NUMVSP(NVZP),NUMVSN(NVZN),
-     +        NUMBP(NVZP,1000),NUMBN(NVZN,1000),
-     +        ITRP(1000),ITRN(1000)
-      REAL HITP(NHZ,1000),HITN(NHZ,1000)
-*
-      REAL ENEH(1000),XZPH(1000),YZPH(1000),EZPH(1000,NZPTX,NZPTY),
-     +                XZNH(1000),YZNH(1000),EZNH(1000,NZNTX,NZNTY)
-      INTEGER NPAH(1000),SFLH(1000),NPPH(1000,NZPTX,NZPTY),
-     +                              NPNH(1000,NZNTX,NZNTY)
-*
-      DATA NUMVSP/0,0/
-      DATA NUMVSN/0,0/
-*
-      DO JZERO=1,1000
-         DO KZERO=1,NHZ
-            HITP(KZERO,JZERO)=0
-            HITN(KZERO,JZERO)=0
-         ENDDO
-      ENDDO
-*
-      DO I=1,1000
-         NPAH(I)=0
-         XZPH(I)=99.
-         YZPH(I)=99.
-         XZNH(I)=99.
-         YZNH(I)=99.
-      ENDDO
-*
-      ITOLD=0
-*      CALL GTREVE
-*
-C --  RETRIEVE HITS INFORMATION FOR THE CURRENT EVENT
-      IF(ISECF.EQ.1.OR.(ISECF.EQ.0.AND.MOD(IEVENT,1).EQ.0))THEN
-         WRITE(6,*)'EVENT NO. ',IEVENT
-         CALL GPHITS('*','*')
-         WRITE(6,*)
-      ENDIF
-*
-      NHMAXP=1000
-      NHMAXN=1000
-*
-      CALL GFHITS(ZSET,ZP1,NVZP,NHZ,NHMAXP,0,
-     +            NUMVSP,ITRP,NUMBP,HITP,NHITP)
-      CALL GFHITS(ZSET,ZN1,NVZN,NHZ,NHMAXN,0,
-     +            NUMVSN,ITRN,NUMBN,HITN,NHITN)
-*
-* Fill n-tuple
-*
-      ITCTP=0
-      DO I=1,NHITP
-         IF(ITRP(I).NE.ITCTP)THEN
-            ITCTP=ITRP(I)
-            NPAH(ITCTP)=HITP(1,I)
-            ENEH(ITCTP)=HITP(2,I)
-            XZPH(ITCTP)=HITP(3,I)
-            YZPH(ITCTP)=HITP(4,I)
-            SFLH(ITCTP)=INT(HITP(5,I))
-         ENDIF
-         J1=NUMBP(1,I)
-         J2=NUMBP(2,I)
-         EZPH(ITCTP,J1,J2)=HITP(7,I)
-         NPPH(ITCTP,J1,J2)=HITP(6,I)
-      ENDDO
-      ITCTN=0
-      DO I=1,NHITN
-         IF(ITRN(I).NE.ITCTN)THEN
-            ITCTN=ITRN(I)
-            NPAH(ITCTN)=HITN(1,I)
-            ENEH(ITCTN)=HITN(2,I)
-            XZNH(ITCTN)=HITN(3,I)
-            YZNH(ITCTN)=HITN(4,I)
-            SFLH(ITCTN)=INT(HITN(5,I))
-         ENDIF
-         J1=NUMBN(1,I)
-         J2=NUMBN(2,I)
-         EZNH(ITCTN,J1,J2)=HITN(7,I)
-         NPNH(ITCTN,J1,J2)=HITN(6,I)
-      ENDDO
-*
-      DO I=1,1000
-         IF(NPAH(I).NE.0)THEN
-            NPA=NPAH(I)
-            ENE=ENEH(I)
-            XZP=XZPH(I)
-            YZP=YZPH(I)
-            SFL=SFLH(I)
-            DO J=1,NZPTX
-               DO K=1,NZPTY
-                  EZP(J,K)=EZPH(I,J,K)
-                  NPP(J,K)=NPPH(I,J,K)
-               ENDDO
-            ENDDO
-            XZN=XZNH(I)
-            YZN=YZNH(I)
-            DO J=1,NZNTX
-               DO K=1,NZNTY
-                  EZN(J,K)=EZNH(I,J,K)
-                  NPN(J,K)=NPNH(I,J,K)
-               ENDDO
-            ENDDO
-*            CALL HFNT(10)
-         ENDIF
-      ENDDO
-*
-      END
-
-*CMZ :          21/11/98  17.33.14  by  Federico Carminati
-*-- Author :
-C==================================================================
-      SUBROUTINE ZDC_GFERMI(A,Z)
-*
-#include "zdc_common.inc"
-#undef CERNLIB_GEANT321_GCONSP_INC
-#include "geant321/gconsp.inc"
-*     CALCOLO DELLA DISTRIBUZIONE DEI MOMENTI SECONDO
-*     LA DISTRIBUZIONE DOPPIA GAUSSIANA (ILINOV), UGUALE
-*     PER NEUTRONI E PROTONI
-*
-      PROBINTP(0)=0.0
-      PROBINTN(0)=0.0
-      SIG1=0.113
-      SIG2=0.250
-      ALFA=0.18*((A/12.)**0.333)
-      XK=(4.*PI)/((1.+ALFA)*TWOPI**1.5)
-*
-      DO I=1,200
-         P=FLOAT(I)*0.005
-         PP(I)=P
-         E1=(P*P)/(2.*SIG1*SIG1)
-         E2=(P*P)/(2.*SIG2*SIG2)
-         F1=EXP(-(E1))
-         F2=EXP(-(E2))
-         PROBP=XK*P*P*(F1/(SIG1**3)+F2/(SIG2**3))*0.005
-         PROBINTP(I)=PROBINTP(I-1)+PROBP
-         PROBINTN(I)=PROBINTP(I)
-      END DO
-*
-      END
-
-*CMZ :          23/02/99  07.53.48  by  Federico Carminati
-*CMZ :  2.03/01 25/08/98  23.39.54  by  Federico Carminati
-*-- Author :
-C-- Author :    E.SCOMPARIN, 07/05/1996
-      SUBROUTINE ZDC_INIT
-C
-C *** INITIALISATION FOR THE ZDC  SIMULATION ***
-C
-C CALLED BY : SXINIT
-C ORIGIN    : E. SCOMPARIN
-C
-C
-#undef CERNLIB_GEANT321_GCFLAG_INC
-#include "geant321/gcflag.inc"
-#undef CERNLIB_GEANT321_GCKINE_INC
-#include "geant321/gckine.inc"
-C
-#include "zdc_common.inc"
-*
-* Initialize COMMON block ZDC_CGEOM
-*
-      DATA HDZN/4.0,4.0,50.0/
-      DATA HDZP/8.0,8.0,75.0/
-C Coordinates of the center of the ZDC front face in the MRS
-      DATA ZNPOS/-0.5,0.,11613./
-      DATA ZPPOS/-19.0,0.,11563./
-      DATA FIZN/0.,0.01825,50.0/
-      DATA FIZP/0.,0.01825,75.0/
-      DATA GRZN/0.025,0.025,50.0/
-      DATA GRZP/0.040,0.040,75.0/
-      DATA NCEN/11,11,0/
-      DATA NCEP/10,10,0/
-*
-* Initialize COMMON block ZDC_HITS
-*
-* Data for set ZDC
-      DATA ZSET,ZN1,ZP1 /'ZDC ', 'ZN1 ','ZP1 '/
-      DATA CHNMSZN/'ZNTX','ZN1 '/
-      DATA CHNMSZP/'ZPTX','ZP1 '/
-      DATA NBITSZN /2,2/
-      DATA NBITSZP /2,2/
-      DATA IDTYPZN,IDTYPZP /1, 2/
-      DATA NWHI,NWDI /1000, 1000/
-*
-* Data for Detectors ZN1,ZP1
-*
-      DATA CHNAMH /'IPAR','EPAR','XPAR','YPAR','SFLG','FELE','ENER'/
-      DATA NBITSH /8,32,32,32,1,32,32/
-      DATA ORIG /0.,0.,10.,10.,0.,0.,0./
-      DATA FACT /1.,1.,10000.,10000.,1.,10000.,10000./
-      DATA NHSUM /2/
-*
-* Read tables of Cerenkov light produced in the fibers
-*
-      OPEN(67,FILE='ZDC/light22620362207s',
-     +    FORM='FORMATTED', STATUS='OLD')
-      OPEN(68,FILE='ZDC/light22620362208s',
-     +    FORM='FORMATTED', STATUS='OLD')
-      OPEN(69,FILE='ZDC/light22620362209s',
-     +    FORM='FORMATTED', STATUS='OLD')
-      OPEN(70,FILE='ZDC/light22620362210s',
-     +    FORM='FORMATTED', STATUS='OLD')
-      DO 10 K=1,NALFA
-         READ (67,10000)(TABLE(1,K,J),J=1,NBE)
-         READ (68,10000)(TABLE(2,K,J),J=1,NBE)
-         READ (69,10000)(TABLE(3,K,J),J=1,NBE)
-         READ (70,10000)(TABLE(4,K,J),J=1,NBE)
-   10 CONTINUE
-10000 FORMAT(7(1X,F10.5))
-      CLOSE (67)
-      CLOSE (68)
-      CLOSE (69)
-      CLOSE (70)
-
-      IFERMI=1
-*
-*  Set Fermi flag according to SWITCH 3
-      IF(ISWIT(3).EQ.1) IFERMI=1
-*  define the LHC energy/nucleon
-      EPERN=2760.
-*
-*  Open data file to read in particles from event generators
-      IF(IHIJ.GE.1)THEN
-         OPEN(27,FILE=FILEH,STATUS='OLD')
-      ELSE IF(IVNU.GE.1)THEN
-         OPEN(27,FILE=FILEV,STATUS='OLD')
-      ENDIF
-C  GET FERMI MOMENTUM DISTRIBUTIONS
-      CALL ZDC_GFERMI(207.,82.)
-C
-*      CALL HROPEN (1,'ALIZ',FILEA,'N',1024,ISTAT)
-*
-*      CALL HBNT(10,'ALIZDC','D')
-*      CALL HBNAME(10,'ALI',NPA,
-*     +'NPA[0,112]:U,ENE,SFL[0,1]:U,'//
-*     +'XZP:R*4:16:[-99,99],YZP:R*4:16:[-99,99],'//
-*     +'EZP(2,2),NPP(2,2),'//
-*     +'XZN:R*4:16:[-99,99],YZN:R*4:16:[-99,99],'//
-*     +'EZN(2,2),NPN(2,2)')
-*
-      PRINT 10100
-10100 FORMAT(1H /1H ,36('*'),' ZDC_INIT ',36('*')/
-     + 1H ,20X,'ZDC simulation package initialised'/
-     + 1H ,80('*'))
-
-      END
-
-*CMZ :          21/11/98  17.33.14  by  Federico Carminati
-*-- Author :
-      SUBROUTINE ZDC_KINE(NT)
-*     Generation of event kinematics                              *
-* ----------------------------------------------------------------*
-#undef CERNLIB_GEANT321_GCKINE_INC
-#include "geant321/gckine.inc"
-#undef CERNLIB_GEANT321_GCFLAG_INC
-#include "geant321/gcflag.inc"
-#include "zdc_common.inc"
-*
-      DIMENSION KATT(10000,2),PATT(10000,4)
-*
-      INTEGER ITA(49),ITB(49)
-      REAL PLAB(3),UBUF(1),UB(1)
-      DIMENSION VERTEX(3)
-      REAL BALP(4),DDDP(4),PLABS(4)
-*
-      DATA UBUF/0./
-      DATA ITA/22,-11,11,0,-13,13,111,211,-211,130,321,-321,
-     +2112,2212,-2212,310,221,3122,3222,3212,3112,3322,3312,
-     +3334,-2112,-3122,-3112,-3212,-3222,-3322,-3312,-3334,
-     +-15,15,411,-411,421,-421,431,-431,4122,0,0,0,0,0,0,0,0/
-      DATA ITB/10,-12,12,0,-14,14,110,120,-120,230,130,-130,
-     +1220,1120,-1120,0,220,2130,1130,1230,2230,1330,2330,3331,
-     +-1220,-2130,-1130,-1230,-2230,-1330,-2330,-3331,-16,16,
-     +-240,240,-140,140,0,0,2140,0,0,0,0,0,0,0,0/
-      DATA IVR/0/
-*
-      DIMENSION RNDM(2)
-      CHARACTER*20 PARTNAME
-*
-* --- BEAMTY=1 Gaussian beam (width sigx sigy, mean values fx fy)
-* --- BEAMTY=2 Uniform beam  (width sigx sigy, mean values fx fy)
-*     Data cards BMTY, INBM
-*
-      DO KZ=1,3
-         VERTEX(KZ)=0
-      ENDDO
-      IF(BEAMTY.EQ.1) THEN
-         CALL SXGAUS(RNDM,2)
-         VERTEX(1)= VERTEX(1)+FX+RNDM(1)*SIGX
-         VERTEX(2)= VERTEX(2)+FY+RNDM(2)*SIGY
-         VERTEX(3)= 0.05
-      ELSEIF(BEAMTY.EQ.2) THEN
-         CALL GRNDM(RNDM,2)
-         VERTEX(1)= VERTEX(1)+FX+(2.*RNDM(1)-1.)*SIGX
-         VERTEX(2)= VERTEX(2)+FY+(2.*RNDM(2)-1.)*SIGY
-         VERTEX(3)= 0.05
-      ENDIF
-*
-*  Fill the vertex bank
-*
-      CALL GSVERT(VERTEX,0,0,0.,0,NVTX)
-      IF(NVTX.EQ.0)WRITE(6,*)'Error defining vertex'
-*
-* Read HIJING event file
-*
-      IF(IHIJ.GE.1)THEN
-   10    READ(27,*,END=70) NMUL,EATT,JATT,NT,NP,N0,N01,N10,N11,B,NATT
-         IF(IHIJ.EQ.2)THEN
-            WRITE(6,*)'HIJING EVENT HEADER= ',NMUL,EATT,JATT,NT,NP,
-     +      N0,N01,N10,N11,B,NATT
-         ENDIF
-         READ(27,*) (KATT(I,1),KATT(I,2),(PATT(I,J),J=1,4),I=1,NATT)
-         IVR=IVR+1
-         IF(IVR.LT.IHIJF) GOTO 10
-*
-         BIMP=B
-         PARTI=FLOAT(NT)+FLOAT(NP)
-         RMULTI=FLOAT(NATT)
-*
-         DO I=1,NATT
-* --  Remove particles with negative z-direction
-            IF(PATT(I,3).LT.0.0) GOTO 30
-* --  Remove (if required) the spectators
-            IF(IHIJSP.EQ.1)THEN
-               IF(KATT(I,2).EQ.0..OR.KATT(I,2).EQ.10.) GOTO 30
-            ENDIF
-* --  Define participant flag : UBUF(1)
-            IF(KATT(I,2).EQ.0..OR.KATT(I,2).EQ.10.) THEN
-               UBUF(1)=0.
-            ELSE
-               UBUF(1)=1.
-            ENDIF
-* --  Translate the particle ID from HIJING to GEANT
-            DO J=1,49
-               IF(KATT(I,1).EQ.ITA(J)) THEN
-                  IPART=J
-                  GOTO 20
-               ENDIF
-            ENDDO
-   20       CONTINUE
-*
-            DO JJ=1,3
-               PLAB(JJ)=PATT(I,JJ)
-            ENDDO
-*
-* Rotations to account for beam divergence and crossing angle
-            IF(BMDIV.NE.0.) CALL ZDC_ROTP(PLAB,0)
-            IF(BMCRA.NE.0.) CALL ZDC_ROTP(PLAB,1)
-*
-* Fill the tracks bank
-            CALL GSKINE(PLAB,IPART,NVTX,UBUF,1,NT)
-            IF(IHIJ.EQ.2)THEN
-               WRITE(6,*)'IPART= ',IPART,'PLAB= ',PLAB
-            ENDIF
-            IF(NT.EQ.0)WRITE(6,*)'Error defining track'
-*
-   30       CONTINUE
-         ENDDO
-*
-* Read VENUS event file
-*
-      ELSE IF(IVNU.GE.1)THEN
-   40    READ(27,*,END=80)LEVT,NREVT,NMUL,B,KOLEVT,COLEVT, PMXEVT,
-     +   EGYEVT,NP,NT,NATT
-         IF(LEVT.NE.1) THEN
-            WRITE(6,*) ' Error in reading VENUS data'
-            STOP
-         ENDIF
-         IF(IVNU.EQ.2)THEN
-            WRITE(6,*)'VENUS EVENT HEADER= ',LEVT,NREVT,NATT,B,KOLEVT,
-     +      COLEVT,PMXEVT,EGYEVT,NP,NT
-         ENDIF
-*
-         DO I=1,NATT
-*--  read produced particles
-            READ(27,*,END=80) LPTL,NREVT,NRPTL,KATT(I,1), (PATT(I,J),J=
-     +      1,4),AMASSS
-*
-*         lptl ......... record label (lptl=3)
-*         nrevt ........ event number
-*         nrptl ........ particle number
-*         katt(1,1)..... particle id
-*         patt ......... 4-momentum (px,py,pz,en) in lab
-*         amasss ........ mass of particle
-*
-            IF(LPTL.NE.3) THEN
-               WRITE(6,*) ' ERROR IN READING VENUS DATA'
-               STOP
-            ENDIF
-         ENDDO
-*
-         IVR=IVR+1
-         IF(IVR.LT.IVNUF) GOTO 40
-*
-         BIMP=B
-         PARTI=(FLOAT(NT)+FLOAT(NP))/2.
-         RMULTI=FLOAT(NATT)
-*
-         DO I=1,NATT
-* --  remove particles in negative direction
-            IF(PATT(I,3).LT.0.0) GOTO 60
-* --  if required remove the spectators
-            IF(IVNSP.EQ.1)THEN
-               IF((KATT(I,1).EQ.1120.OR.KATT(I,1).EQ.1220).AND. (PATT(I
-     +         ,4).LT.(EPERN*1.005).AND. PATT(I,4).GT.(EPERN*0.995)))
-     +         GOTO 60
-            ENDIF
-* --  flag the spectators (UBUF(1)=0)
-            IF((KATT(I,1).EQ.1120.OR.KATT(I,1).EQ.1220).AND. (PATT(I,4)
-     +      .GT.(EPERN*0.995).AND. PATT(I,4).LT.(EPERN*1.005))) THEN
-               UBUF(1)=0.
-            ELSE
-               UBUF(1)=1.
-            ENDIF
-* --  Translate the particle ID from VENUS to GEANT
-            DO J=1,49
-               IF(KATT(I,1).EQ.ITB(J))THEN
-                  IPART=J
-                  GOTO 50
-               ENDIF
-            ENDDO
-   50       CONTINUE
-            DO JJ=1,3
-               PLAB(JJ)=PATT(I,JJ)
-            ENDDO
-*
-* Rotations to account for beam divergence and crossing angle
-            IF(BMCRA.NE.0.)CALL ZDC_ROTP(PLAB,1)
-            IF(BMDIV.NE.0.)CALL ZDC_ROTP(PLAB,0)
-*
-* Fill the tracks bank
-            CALL GSKINE(PLAB,IPART,NVTX,UBUF,1,NT)
-            IF(IVNU.EQ.2)THEN
-               WRITE(6,*)'IPART= ',IPART,'PLAB= ',PLAB
-            ENDIF
-            IF(NT.EQ.0)WRITE(6,*)'Error defining track'
-   60       CONTINUE
-         ENDDO
-*
-      ELSE
-*
-* Generation of test particles
-*
-* Definition of the incident particle
-*
-         IPART = NINT(PKINE(1))
-         UBUF(1)=1
-         CALL GFPART(IPART,PARTNAME,ITRTYP,AMASS,CHARGE,TLIFE,UB,NB)
-         AAP=1.0
-*
-* --- In case of a ion , find out energy and momentum
-* --- NAAP=A=Z+N - atomic number of the initial particle
-         IF(IPART.GE.45) THEN
-            NAAP = INT(0.5 + AMASS/0.93149432)
-            AAP = NAAP
-            UBUF(1)=0.
-         ENDIF
-         IF((IPART.GE.45).OR.(IPART.EQ.13).OR.(IPART.EQ.14)) THEN
-            UBUF(1)=0.
-         ENDIF
-*
-         IF(IPART.EQ.14)THEN
-            AMA=0.938
-         ELSE IF(IPART.EQ.13)THEN
-            AMA=0.939
-         ELSE
-            AMA=AMASS
-         ENDIF
-*
-         IF(PKINE(6).EQ.0.)THEN
-            PLAB(1)=PKINE(2)*PKINE(3)
-            PLAB(2)=PKINE(2)*PKINE(4)
-            PLAB(3)=PKINE(2)*PKINE(5)
-         ELSE
-            SCANG=2*ATAN(EXP(-(PKINE(6))))
-            PLAB(1)=-PKINE(2)*SIN(SCANG)
-            PLAB(2)=0.
-            PLAB(3)=PKINE(2)*COS(SCANG)
-         ENDIF
-*
-* Rotations to account for beam divergence and crossing angle
-         IF(BMCRA.NE.0.)CALL ZDC_ROTP(PLAB,1)
-         IF(BMDIV.NE.0.)CALL ZDC_ROTP(PLAB,0)
-*
-* --  in case of a nucleon, if required, apply the Fermi momentum
-         IF(UBUF(1).EQ.0.AND.IFERMI.EQ.1) THEN
-            IF(IPART.EQ.13.OR.IPART.EQ.14)THEN
-               CALL ZDC_EFERMI(IPART)
-            ELSE IF(IPART.GE.45)THEN
-               CALL ZDC_EFERMI(13)
-               GOLDHABER=SQRT(AAP*(207-AAP)/(207-1.))
-               DO JJ=1,3
-                  DDP(JJ)=DDP(JJ)*GOLDHABER
-               ENDDO
-            ENDIF
-            DO II=1,3
-               BALP(II)=-PLAB(II)
-            ENDDO
-            BALP(4)=SQRT(BALP(1)**2+BALP(2)**2+BALP(3)**2+AMA**2)
-            DO II=1,3
-               DDDP(II)=DDP(II)
-            ENDDO
-            DDDP(4)=SQRT(DDDP(1)**2+DDDP(2)**2+DDDP(3)**2+AMA**2)
-            CALL LORENF(AMA,BALP,DDDP,PLABS)
-            DO II=1,3
-               PLAB(II)=PLABS(II)
-            ENDDO
-c           WRITE(6,*)'BALP ',BALP,'DDDP ',DDDP,'PLABS ',PLABS
-         ENDIF
-*
-         BIMP=999.
-*
-*  Fill the tracks bank
-         CALL GSKINE(PLAB,IPART,NVTX,UBUF,1,NT)
-         IF(NT.EQ.0)WRITE(6,*)'Error defining track'
-
-      ENDIF
-*
-* Some debug printings
-      IF(IHIJ.EQ.2.OR.IVNU.EQ.2)THEN
-         CALL GPVERT(NVTX)
-         DO KK=1,NT
-            CALL GPKINE(KK)
-         ENDDO
-      ENDIF
-*
-C
-      RETURN
-   70 WRITE(6,*) 'END OF HIJING FILE'
-      IEORUN=1
-      GOTO 999
-   80 WRITE(6,*) 'END OF VENUS FILE'
-      IEORUN=1
-*
-  999 END
-
-*CMZ :          19/11/98  09.54.52  by  Federico Carminati
-*-- Author :
-      SUBROUTINE  ZDC_ROTP(PLAB,ICROSS)
-#undef CERNLIB_GEANT321_GCKINE_INC
-#include "geant321/gckine.inc"
-#undef CERNLIB_GEANT321_GCFLAG_INC
-#include "geant321/gcflag.inc"
-C
-#undef CERNLIB_GEANT321_GCONSP_INC
-#include "geant321/gconsp.inc"
-#include "zdc_common.inc"
-C
-      DOUBLE PRECISION TETPART,FIPART,TETDIV,FIDIV,TETSUM,FISUM
-      DOUBLE PRECISION DPLAB(3)
-      DIMENSION PLAB(3)
-      DIMENSION RVEC(1)
-      DIMENSION RNDM(1)
-C
-C TAKE NON-ZERO DIVERGENCY
-c        write(6,*)'PLAB (NODIV) = ',plab
-      PMOD=0.0
-      DO IJ=1,3
-         DPLAB(IJ)=PLAB(IJ)
-         PMOD=PMOD+PLAB(IJ)*PLAB(IJ)
-      ENDDO
-      PMOD=SQRT(PMOD)
-      IF(ICROSS.EQ.0)THEN
-C---  TETDIV is given in radiants and it is read by data cards
-         CALL RNORML(RVEC,1)
-c          WRITE(6,*)RVEC
-         TETDIV=PKINE(10)*ABS(RVEC(1))
-C---  PHIDIV is randomly chosen between 0 and 360
-         CALL GRNDM(RNDM,1)
-         FIDIV=RNDM(1)*TWOPI
-      ELSE IF(ICROSS.EQ.1)THEN
-         IF(ISWIT(7).EQ.0)THEN
-            TETDIV=0.
-            FIDIV=0.
-         ELSE IF(ISWIT(7).EQ.1)THEN
-            TETDIV=PKINE(4)
-            FIDIV=0.
-         ELSE IF(ISWIT(7).EQ.2)THEN
-            TETDIV=PKINE(4)
-            FIDIV=PIBY2
-         ENDIF
-      ENDIF
-      TETPART=DATAN(DSQRT(DPLAB(1)**2+DPLAB(2)**2)/DPLAB(3))
-      IF(DPLAB(2).NE.0..OR.DPLAB(1).NE.0.) THEN
-         FIPART=DATAN2(DPLAB(2),DPLAB(1))
-      ELSE
-         FIPART=0.
-      ENDIF
-      IF (FIPART.LT.0)FIPART=FIPART+TWOPI
-C        write(6,*)' TETPART= ',tetpart,' FIPART= ',fipart
-      TETDIV=TETDIV*RADDEG
-      FIDIV=FIDIV*RADDEG
-      TETPART=TETPART*RADDEG
-      FIPART=FIPART*RADDEG
-c        CALL ZDC_ADDANG(TETDIV,FIDIV,TETPART,FIPART,TETSUM,FISUM)
-      CALL ZDC_ADDANG(TETPART,FIPART,TETDIV,FIDIV,TETSUM,FISUM)
-C        write(6,*)' TETSUM= ',tetsum,'FISUM= ',fisum
-      TETSUM=TETSUM*DEGRAD
-      FISUM=FISUM*DEGRAD
-      PLAB(1)=PMOD*DSIN(TETSUM)*DCOS(FISUM)
-      PLAB(2)=PMOD*DSIN(TETSUM)*DSIN(FISUM)
-      PLAB(3)=PMOD*DCOS(TETSUM)
-C        write(6,*)'PLAB (DIV) = ',plab
-      RETURN
-      END
-
-*CMZ :          19/11/98  09.54.52  by  Federico Carminati
-*CMZ :  2.03/01 25/08/98  23.40.04  by  Federico Carminati
-*-- Author :   E.SCOMPARIN, 13/05/1996.
-      SUBROUTINE ZDC_STEP
-C
-C *** RECORDING OF ZDC HITS AFTER EACH TRACKING STEP ***
-C
-C CALLED BY : SXSTEP
-C ORIGIN    : E. SCOMPARIN
-C
-#undef CERNLIB_GEANT321_GCKINE_INC
-#undef CERNLIB_GEANT321_GCONSP_INC
-#undef CERNLIB_GEANT321_GCVOLU_INC
-#undef CERNLIB_GEANT321_GCKMAX_INC
-#undef CERNLIB_GEANT321_GCKING_INC
-#undef CERNLIB_GEANT321_GCNUM_INC
-#undef CERNLIB_GEANT321_GCTRAK_INC
-#undef CERNLIB_GEANT321_GCFLAG_INC
-#undef CERNLIB_GEANT321_GCTMED_INC
-#undef CERNLIB_GEANT321_GCMATE_INC
-#undef CERNLIB_GEANT321_GCSETS_INC
-#include "geant321/gckine.inc"
-#include "geant321/gconsp.inc"
-#include "geant321/gcvolu.inc"
-#include "geant321/gcking.inc"
-#include "geant321/gcnum.inc"
-#include "geant321/gctrak.inc"
-#include "geant321/gcflag.inc"
-#include "geant321/gctmed.inc"
-#include "geant321/gcmate.inc"
-#include "geant321/gcsets.inc"
-#include "zdc_common.inc"
-*
-      DIMENSION LNAM(15),LNUM(15)
-      DIMENSION UB(1)
-*
-      DIMENSION VERT0(3),PVERT0(4)
-      CHARACTER*20 CHNPART0
-*
-      DIMENSION XLOCM(3),XANGM(3),XLOCL(3),XANGL(3),FNULA(3),ZENTR(3)
-      DATA ALFMAX /110.0/
-*
-* New track
-*
-      IF(ITRA.NE.ITOLD)THEN
-         IF(INWVOL.EQ.1.AND.IDTYPE.GT.0)THEN
-*
-* Impact point on the ZDC (either ZPRO or ZNEU)
-*
-            NLEV0=NLEVEL
-            CALL GFPATH(ISET,IDET,NUMBV,NLEV,LNAM,LNUM)
-            CALL UCTOH('ZNEU',IZNEU,4,4)
-            CALL UCTOH('ZPRO',IZPRO,4,4)
-            DO I=NLEV,1,-1
-               IF(LNAM(I).EQ.IZNEU.OR.LNAM(I).EQ.IZPRO)THEN
-                  NLEVEL=0
-                  CALL GLVOLU(I,LNAM,LNUM,IER)
-                  IF(IDTYPE.EQ.1)THEN
-                     CALL GMTOD(VECT,HITSBUPN(3),1)
-                     HITSBUPP(3)=99.
-                     HITSBUPP(4)=99.
-                  ELSE IF(IDTYPE.EQ.2)THEN
-                     CALL GMTOD(VECT,HITSBUPP(3),1)
-                     HITSBUPN(3)=99.
-                     HITSBUPN(4)=99.
-                  ENDIF
-                  NLEVEL=NLEV0
-                  GOTO 10
-               ENDIF
-            ENDDO
-   10       CONTINUE
-*
-* Particle type and energy for the primary track
-*
-            CALL GFKINE(ITRA,VERT0,PVERT0,IPART0,NVERT0,UB,NB)
-            CALL GFPART(IPART0,CHNPART0,ITRTYP0,AMASS0,CHARGE0,TLIFE0,
-     +      UB,NB)
-            PVERTM=VMOD(PVERT0,3)
-            GEKIN0=SQRT(PVERTM**2+AMASS0**2)
-            IF(IPART.NE.IPART0.OR.GEKIN.LT.GEKIN0*0.95)THEN
-               HITSBUPP(1)=FLOAT(IPART0)
-               HITSBUPP(2)=GEKIN0
-               HITSBUPP(5)=1.
-               HITSBUPN(1)=FLOAT(IPART0)
-               HITSBUPN(2)=GEKIN0
-               HITSBUPN(5)=1.
-            ELSE
-               HITSBUPP(1)=FLOAT(IPART)
-               HITSBUPP(2)=GEKIN
-               HITSBUPP(5)=0.
-               HITSBUPN(1)=FLOAT(IPART)
-               HITSBUPN(2)=GEKIN
-               HITSBUPN(5)=0.
-            ENDIF
-            HITSBUPP(6)=0.
-            HITSBUPP(7)=0.
-            HITSBUPN(6)=0.
-            HITSBUPN(7)=0.
-            IF(IDTYPE.EQ.1)THEN
-               CALL GSAHIT(ISET,IDET,ITRA,NUMBV,HITSBUPN,IHIT)
-            ELSE IF(IDTYPE.EQ.2)THEN
-               CALL GSAHIT(ISET,IDET,ITRA,NUMBV,HITSBUPP,IHIT)
-            ENDIF
-            ITOLD=ITRA
-         ENDIF
-      ENDIF
-*
-* Energy deposition in the passive material
-*
-      IF(INWVOL.EQ.0.AND.IDTYPE.GT.0)THEN
-         HITS(6)=0.
-         IF(ISTOP.EQ.2)THEN
-            HITS(7)=GEKIN
-         ELSE
-            HITS(7)=DESTEP
-         ENDIF
-         IF(IDTYPE.EQ.1)THEN
-            DO KCOPY=1,5
-               HITSBUPN(KCOPY)=HITS(KCOPY)
-            ENDDO
-         ELSE IF(IDTYPE.EQ.2)THEN
-            DO KCOPY=1,5
-               HITSBUPP(KCOPY)=HITS(KCOPY)
-            ENDDO
-         ENDIF
-         CALL GSCHIT(ISET,IDET,ITRA,NUMBV,HITS,NHSUM,IHIT)
-      ENDIF
-*
-* Select charged relativistic particles
-*
-      IF(ABS(CHARGE).EQ.0)RETURN
-      IF(GEKIN.GT.0.00001) THEN
-         BETA  = VECT(7)/GETOT
-      ELSE
-         RETURN
-      ENDIF
-      IF(BETA.LT.0.67) RETURN
-
-*
-* Particle inside fiber
-*
-      IF(NUMED.EQ.803.AND.IDTYPE.GT.0) THEN
-*
-         XLOCM(1)= VECT(1)
-         XLOCM(2)= VECT(2)
-         XLOCM(3)= VECT(3)
-         XANGM(1)= VECT(4)
-         XANGM(2)= VECT(5)
-         XANGM(3)= VECT(6)
-*
-* --- Calculating the position of the centre of the fiber in MARS
-         DO KZERO=1,3
-            FNULA(KZERO)=0
-            ZENTR(KZERO)=0
-         ENDDO
-         CALL GDTOM(FNULA,ZENTR,1)
-*
-* --- Angle between the particle trajectory and the fiber axis
-*
-         CALL GMTOD(XANGM,XANGL,2)
-         IF(XANGL(3).GT.1.0) XANGL(3)=SIGN(1.0,XANGL(3))
-         ALFAR=ACOS(XANGL(3))
-         ALFAD=ALFAR*RADDEG
-*
-         IF (ALFAD.GT.ALFMAX) RETURN
-         IALFA = INT(1.+ALFAD/2.)
-*
-* --- Distance between the particle trajectory and the fiber axis
-*
-         CALL GMTOD(XLOCM,XLOCL,1)
-         IF(ABS(XANGL(1)).GT.0.0001) THEN
-            DCOEFF = XANGL(2)/XANGL(1)
-            BE=ABS(XLOCL(2)-DCOEFF*XLOCL(1))/SQRT(DCOEFF*DCOEFF+1.)
-         ELSE
-            BE = ABS(XLOCL(1))
-         ENDIF
-         IF(IDTYPE.EQ.1)THEN
-            RADIUS=FIZN(2)
-         ELSEIF(IDTYPE.EQ.2)THEN
-            RADIUS=FIZP(2)
-         ENDIF
-         IF(BE.GT.RADIUS) THEN
-            PRINT*,'DISTANCE GREATER THAN FIBER RADIUS'
-            RETURN
-         ENDIF
-         IBE = 1+INT(1000.*BE)
-         IF(IBE.GT.NBE)IBE=NBE
-*
-* --- Finding out proper index for beta
-         IF(BETA.GE.0.67 .AND. BETA.LE.0.75) IBETA=1
-         IF(BETA.GT.0.75 .AND. BETA.LE.0.85) IBETA=2
-         IF(BETA.GT.0.85 .AND. BETA.LE.0.95) IBETA=3
-         IF(BETA.GT.0.95 .AND. BETA.LE.1.00) IBETA=4
-*
-* --- Looking into the tables
-         OUT = CHARGE*CHARGE*TABLE(IBETA,IALFA,IBE)
-         CALL RNPSSN(OUT,N,IERROR)
-         HITS(6)=FLOAT(N)
-         HITS(7)=0.
-         IF(IDTYPE.EQ.1)THEN
-            CALL UCOPY(HITSBUPN,HITS,4)
-         ELSE IF(IDTYPE.EQ.2)THEN
-            CALL UCOPY(HITSBUPP,HITS,4)
-         ENDIF
-         CALL GSCHIT(ISET,IDET,ITRA,NUMBV,HITS,NHSUM,IHIT)
-      ENDIF
-*
-  999 END
-
-*CMZ :          18/11/98  16.55.53  by  Federico Carminati
-*CMZ :  2.03/01 06/08/98  10.13.59  by  Federico Carminati
-*-- Author :   E. SCOMPARIN
-      SUBROUTINE ZDC_TRKI(IFLAG)
-C
-C *** DEFINITION OF THE GEOMETRY OF THE PHOS ***
-C *** NVE 24-SEP-1990 CERN GENEVA ***
-C
-C CALLED BY : SXTRKI
-C ORIGIN    : E. SCOMPARIN
-C
-#undef CERNLIB_GEANT321_GCKINE_INC
-#undef CERNLIB_GEANT321_GCKMAX_INC
-#undef CERNLIB_GEANT321_GCKING_INC
-#undef CERNLIB_GEANT321_GCTRAK_INC
-#undef CERNLIB_GEANT321_GCTMED_INC
-#undef CERNLIB_GEANT321_GCFLAG_INC
-#undef CERNLIB_GEANT321_GCMATE_INC
-#include "geant321/gckine.inc"
-#include "geant321/gcking.inc"
-#include "geant321/gctrak.inc"
-#include "geant321/gctmed.inc"
-#include "geant321/gcflag.inc"
-#include "geant321/gcmate.inc"
-#include "zdc_common.inc"
-
-      REAL UBUF(1)
-      DATA ITOLDG/0/
-
-* Fetch new track (VENUS or HIJING)
-      IF(ITRA.NE.ITOLDG)THEN
-         CALL GFKINE(ITRA,VERT,PVERT,IPART,NVERT,UBUF,NUBUF)
-         IFLPART=INT(UBUF(1))
-         IF(IHIJ.EQ.2.OR.IVNU.EQ.2)WRITE(6,*)'ITRA,IFLPART ',ITRA,
-     +   IFLPART
-         ITOLDG=ITRA
-      ENDIF
-*
-      END
-
-*CMZ :          15/02/99  14.40.30  by  Federico Carminati
-*-- Author :  Rene Brun
-      SUBROUTINE ZDC_DEFS
-C
-C *** DEFINITION OF THE ZDC parameters
-C     CALLED BY : SXDEFS
-C
-      end
-
-      subroutine zdc_setbeam(beam, fxoff, fyoff, sx, sy,
-     +               div, angle, cross)
-* beam  : 1 = gaussian beam
-*       : 2 = uniform beam
-* fxoff : x-coordinate of beam offset
-* fyoff : y-coordinate of beam offset
-* sx    : sigma-x of the beam (gaussian or uniform)
-* sy    : sigma-y of the beam (gaussian or uniform)
-* div   : divergency of the beam (32*10**-6 rad for LHC)
-* angle : beam crossing angle (100*10**-6 rad for LHC)
-* cross : 1 = horizontal beam crossing
-*       : 2 = vertical beam crossing
-#include "zdc_common.inc"
-      integer beam, cross
-      real fxoff,fyoff,sx,sy,div,angle
-      beamty = type
-      fx     = fxoff
-      fy     = fyoff
-      sigx   = sx
-      sigy   = sy
-      bmdiv  = div
-      bmcra  = angle
-      iflcr  = cross
-      end
-
-      subroutine zdc_sethijing(hij, hijf, hijsp, file)
-* IHIJ  : 1 = read HIJING event file
-*       : 2 =  "     "      "    "    + debug
-* IHIJF : event number of the first event to be read from file
-* IHIJSP: 0 = read all particles
-*       : 1 = remove spectator nucleons
-#include "zdc_common.inc"
-      integer hij,hijf,hijsp
-      character *(*) file
-      ihij   = hij
-      ihijf  = hijf
-      ihijsp = hijsp
-      fileh  = file
-      end
-
-      subroutine zdc_setvenus(hiv, hivf, hivsp, file)
-* IHIV  : 1 = read VENUS event file
-*       : 2 =  "     "      "    "    + debug
-* IHIVF : event number of the first event to be read from file
-* IHIVSP: 0 = read all particles
-*       : 1 = remove spectator nucleons
-#include "zdc_common.inc"
-      integer hiv,hivf,hivsp
-      character *(*) file
-      ihiv   = hiv
-      ihivf  = hivf
-      ihivsp = hivsp
-      filev  = file
-      end
-
-      subroutine zdc_setkine(code, pmom, cx, cy, cz, type, fermi)
-* code     : GEANT code of the test particle
-* pmom     : absolute value of particle momentum
-* cx,cy,cz : director cosines of the track (if type)
-* type     :  0 = take director cosines from cx,cy,cz)
-*          : <>0 = pseudorapidity of the test particle
-* fermi    : 0 = no Fermi motion for the spectator nucleons
-*          : 1 = Fermi motion for the spectator nucleons
-#undef CERNLIB_GEANT321_GCKINE_INC
-#include "geant321/gckine.inc"
-#include "zdc_common.inc"
-      integer code,type,fermi
-      real pmom,cx,cy,cz
-      pkine(1)  = code
-      pkine(2)  = pmom
-      pkine(3)  = cx
-      pkine(4)  = cy
-      pkine(5)  = cz
-      pkine(6)  = type
-      ifermi    = fermi
-      end
-*CMZ :          19/11/98  09.31.36  by  Federico Carminati
-*-- Author :    Federico Carminati   19/11/98
-      SUBROUTINE SXGAUS(RVEC,N)
-#undef CERNLIB_GEANT321_GCONSP_INC
-#include "geant321/gconsp.inc"
-*KEND.
-*
-* Vector of random numbers distributed like a gaussian
-      DIMENSION RNDM(2), RVEC(N)
-      DO K=1,(N-1)/2+1
-         CALL GRNDM(RNDM,2)
-         PHI = TWOPI*RNDM(1)
-         RHO = SQRT(-2.*LOG(RNDM(2)))
-         RVEC(2*K-1) = RHO*SIN(PHI)
-         IF(2*K.LE.N) RVEC(2*K  ) = RHO*COS(PHI)
-      ENDDO
-*
-      END
diff --git a/ZDC/AliZDCv1.cxx b/ZDC/AliZDCv1.cxx
new file mode 100644 (file)
index 0000000..72bf6b3
--- /dev/null
@@ -0,0 +1,1121 @@
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+/*
+$Log$
+Revision 1.7  2000/01/19 17:17:40  fca
+
+Revision 1.6  1999/09/29 09:24:35  fca
+Introduction of the Copyright and cvs Log
+
+*/
+
+///////////////////////////////////////////////////////////////////////////////
+//                                                                           //
+//  Zero Degree Calorimeter                                                  //
+//  This class contains the basic functions for the Time Of Flight           //
+//  detector. Functions specific to one particular geometry are              //
+//  contained in the derived classes                                         //
+//                                                                           //
+///////////////////////////////////////////////////////////////////////////////
+
+#include <TBRIK.h>
+#include <TNode.h>
+#include <TMath.h>
+
+#include "stdio.h"
+#include "AliZDCv1.h"
+#include "AliRun.h"
+#include "AliMC.h"
+#include "AliCallf77.h"
+#include "AliConst.h"
+#include "AliPDG.h"
+ClassImp(AliZDCv1)
+
+///////////////////////////////////////////////////////////////////////////////
+//                                                                           //
+//  Zero Degree Calorimeter version 1                                        //
+//                                                                           //
+///////////////////////////////////////////////////////////////////////////////
+
+//_____________________________________________________________________________
+AliZDCv1::AliZDCv1() : AliZDC()
+{
+  //
+  // Default constructor for Zero Degree Calorimeter
+  //
+  fMedSensF1 = 0;
+  fMedSensF2 = 0;
+  fMedSensZN = 0;
+  fMedSensZP = 0;
+  fMedSensGR = 0;
+}
+//_____________________________________________________________________________
+AliZDCv1::AliZDCv1(const char *name, const char *title)
+  : AliZDC(name,title)
+{
+  //
+  // Standard constructor for Zero Degree Calorimeter 
+  //
+  fMedSensF1 = 0;
+  fMedSensF2 = 0;
+  fMedSensZN = 0;
+  fMedSensZP = 0;
+  fMedSensGR = 0;
+}
+//_____________________________________________________________________________
+void AliZDCv1::CreateGeometry()
+{
+  //
+  // Create the geometry for the Zero Degree Calorimeter version 1
+  //* Initialize COMMON block ZDC_CGEOM
+  //*
+
+  CreateBeamLine();
+  CreateZDC();
+}
+  
+//_____________________________________________________________________________
+void AliZDCv1::CreateBeamLine()
+{
+  
+  Float_t angle;
+  Float_t zq, conpar[9], elpar[3], tubpar[3];
+  Int_t im1, im2;
+  Float_t zd1, zd2;
+  
+  
+  Int_t *idtmed = fIdtmed->GetArray();
+  
+  // -- Mother of the ZDC 
+  
+  conpar[0] = 0.;
+  conpar[1] = 360.;
+  conpar[2] = 2.;
+  conpar[3] = 1921.6;
+  conpar[4] = 0.;
+  conpar[5] = 55.;
+  conpar[6] = 13060.;
+  conpar[7] = 0.;
+  conpar[8] = 55.;
+  gMC->Gsvolu("ZDC ", "PCON", idtmed[10], conpar, 9);
+  gMC->Gspos("ZDC ", 1, "ALIC", 0., 0., 0., 0, "ONLY");
+
+  // -- FIRST SECTION OF THE BEAM PIPE (from compensator dipole to 
+  //    beginning of D1) 
+  
+  zd1 = 1921.6;
+  
+  tubpar[0] = 6.3/2.;
+  tubpar[1] = 6.7/2.;
+  tubpar[2] = 3916.7/2.;
+  gMC->Gsvolu("P001", "TUBE", idtmed[5], tubpar, 3);
+  gMC->Gspos("P001", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
+  
+  //-- SECOND SECTION OF THE BEAM PIPE (FROM THE END OF D1 TO THE BEGINNING OF
+  //    D2) 
+  
+  //-- FROM MAGNETIC BEGINNING OG D1 TO MAGNETIC END OF D1 + 23.5 cm
+  //-- Elliptic pipe
+  
+  zd1 = 6310.8-472.5;
+  
+  elpar[0] = 6.84/2.;
+  elpar[1] = 5.86/2.;
+  elpar[2] = 945./2.;
+  gMC->Gsvolu("E001", "ELTU", idtmed[5], elpar, 3);
+  gMC->Gspos("E001", 1, "ZDC ", 0., 0., elpar[2] + zd1, 0, "ONLY");
+  
+  elpar[0] = 6.44/2.;
+  elpar[1] = 5.46/2.;
+  elpar[2] = 945./2.;
+  gMC->Gsvolu("E002", "ELTU", idtmed[10], elpar, 3);
+  gMC->Gspos("E002", 1, "E001", 0., 0., 0., 0, "ONLY");
+
+  zd1 += 2.*elpar[2];
+  
+  elpar[0] = 6.84/2.;
+  elpar[1] = 5.86/2.;
+  elpar[2] = 13.5/2.;
+  gMC->Gsvolu("E003", "ELTU", idtmed[5], elpar, 3);
+  gMC->Gspos("E002", 1, "ZDC ", 0., 0., elpar[2] + zd1, 0, "ONLY");
+  
+  elpar[0] = 6.44/2.;
+  elpar[1] = 5.46/2.;
+  elpar[2] = 13.5/2.;
+  gMC->Gsvolu("E004", "ELTU", idtmed[10], elpar, 3);
+  gMC->Gspos("E004", 1, "E003", 0., 0., 0., 0, "ONLY");
+
+  zd1 += 2.*elpar[2];
+  
+  conpar[0] = 25./2.;
+  conpar[1] = 6.44/2.;
+  conpar[2] = 6.84/2.;
+  conpar[3] = 10./2.;
+  conpar[4] = 10.4/2.;
+  gMC->Gsvolu("C001", "CONE", idtmed[5], conpar, 5);
+  gMC->Gspos("C001", 1, "ZDC ", 0., 0., conpar[0] + zd1, 0, "ONLY");
+
+  zd1 += 2.*conpar[0];
+  
+  tubpar[0] = 10./2.;
+  tubpar[1] = 10.4/2.;
+  tubpar[2] = 50./2.;
+  gMC->Gsvolu("P002", "TUBE", idtmed[5], tubpar, 3);
+  gMC->Gspos("P002", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
+  
+  zd1 += tubpar[2] * 2.;
+  
+  tubpar[0] = 10./2.;
+  tubpar[1] = 10.4/2.;
+  tubpar[2] = 10./2.;
+  gMC->Gsvolu("P003", "TUBE", idtmed[5], tubpar, 3);
+  gMC->Gspos("P003", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
+  
+  zd1 += tubpar[2] * 2.;
+  
+  tubpar[0] = 10./2.;
+  tubpar[1] = 10.4/2.;
+  tubpar[2] = 3.16/2.;
+  gMC->Gsvolu("P004", "TUBE", idtmed[5], tubpar, 3);
+  gMC->Gspos("P004", 1, "ZDC ", 0., 0., tubpar[0] + zd1, 0, "ONLY");
+  
+  zd1 += tubpar[2] * 2.;
+  
+  tubpar[0] = 10.0/2.;
+  tubpar[1] = 10.4/2;
+  tubpar[2] = 190./2.;
+  gMC->Gsvolu("P005", "TUBE", idtmed[5], tubpar, 3);
+  gMC->Gspos("P005", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
+  
+  zd1 += tubpar[2] * 2.;
+  
+  conpar[0] = 30./2.;
+  conpar[1] = 10./2.;
+  conpar[2] = 10.4/2.;
+  conpar[3] = 20.6/2.;
+  conpar[4] = 21./2.;
+  gMC->Gsvolu("P006", "CONE", idtmed[5], conpar, 5);
+  gMC->Gspos("P006", 1, "ZDC ", 0., 0., conpar[0] + zd1, 0, "ONLY");
+  
+  zd1 += conpar[0] * 2.;
+  
+  tubpar[0] = 20.6/2.;
+  tubpar[1] = 21./2.;
+  tubpar[2] = 450./2.;
+  gMC->Gsvolu("P007", "TUBE", idtmed[5], tubpar, 3);
+  gMC->Gspos("P007", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
+  
+  zd1 += tubpar[2] * 2.;
+  
+  conpar[0] = 13.6/2.;
+  conpar[1] = 20.6/2.;
+  conpar[2] = 21./2.;
+  conpar[3] = 25.4/2.;
+  conpar[4] = 25.8/2.;
+  gMC->Gsvolu("P008", "CONE", idtmed[5], conpar, 5);
+  gMC->Gspos("P008", 1, "ZDC ", 0., 0., conpar[0] + zd1, 0, "ONLY");
+  
+  zd1 += conpar[0] * 2.;
+  
+  tubpar[0] = 25.4/2.;
+  tubpar[1] = 25.8/2.;
+  tubpar[2] = 205.8/2.;
+  gMC->Gsvolu("P009", "TUBE", idtmed[5], tubpar, 3);
+  gMC->Gspos("P009", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
+  
+  zd1 += tubpar[2] * 2.;
+  
+  tubpar[0] = 50./2.;
+  tubpar[1] = 50.4/2.;
+  tubpar[2] = 505.4/2.;
+  gMC->Gsvolu("P010", "TUBE", idtmed[5], tubpar, 3);
+  gMC->Gspos("P010", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
+  
+  zd1 += tubpar[2] * 2.;
+  
+  tubpar[0] = 50./2.;
+  tubpar[1] = 50.4/2.;
+  tubpar[2] = 700./2.;
+  gMC->Gsvolu("P011", "TUBE", idtmed[5], tubpar, 3);
+  gMC->Gspos("P011", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
+  
+  zd1 += tubpar[2] * 2.;
+  
+  tubpar[0] = 50./2.;
+  tubpar[1] = 50.4/2.;
+  tubpar[2] = 778.5/2.;
+  gMC->Gsvolu("P012", "TUBE", idtmed[5], tubpar, 3);
+  gMC->Gspos("P012", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
+  
+  zd1 += tubpar[2] * 2.;
+  
+  conpar[0] = 14.18/2.;
+  conpar[1] = 50./2.;
+  conpar[2] = 50.4/2.;
+  conpar[3] = 55./2.;
+  conpar[4] = 55.4/2.;
+  gMC->Gsvolu("P013", "CONE", idtmed[5], conpar, 5);
+  gMC->Gspos("P013", 1, "ZDC ", 0., 0., conpar[0] + zd1, 0, "ONLY");
+  
+  zd1 += conpar[0] * 2.;
+  
+  tubpar[0] = 55./2.;
+  tubpar[1] = 55.4/2.;
+  tubpar[2] = 730./2.;
+  gMC->Gsvolu("P014", "TUBE", idtmed[5], tubpar, 3);
+  gMC->Gspos("P014", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
+  
+  zd1 += tubpar[2] * 2.;
+  
+  conpar[0] = 36.86/2.;
+  conpar[1] = 55./2.;
+  conpar[2] = 55.4/2.;
+  conpar[3] = 68./2.;
+  conpar[4] = 68.4/2.;
+  gMC->Gsvolu("P015", "CONE", idtmed[5], conpar, 5);
+  gMC->Gspos("P015", 1, "ZDC ", 0., 0., conpar[0] + zd1, 0, "ONLY");
+  
+  zd1 += conpar[0] * 2.;
+  
+  tubpar[0] = 68./2.;
+  tubpar[1] = 68.4/2.;
+  tubpar[2] = 927.3/2.;
+  gMC->Gsvolu("P016", "TUBE", idtmed[5], tubpar, 3);
+  gMC->Gspos("P016", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
+  
+  zd1 += tubpar[2] * 2.;
+  
+  tubpar[0] = 0./2.;
+  tubpar[1] = 68.4/2.;
+  tubpar[2] = 0.2/2.;
+  gMC->Gsvolu("P017", "TUBE", idtmed[5], tubpar, 3);
+  gMC->Gspos("P017", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
+  
+  zd1 += tubpar[2] * 2.;
+  
+  tubpar[0] = 0./2.;
+  tubpar[1] = 5./2.;
+  tubpar[2] = 0.2/2.;
+  gMC->Gsvolu("Q017", "TUBE", idtmed[10], tubpar, 3);
+  
+  //-- Position Q017 inside P017
+  gMC->Gspos("Q017", 1, "P017", -7.7, 0., 0., 0, "ONLY");
+  
+  tubpar[0] = 0./2.;
+  tubpar[1] = 7./2.;
+  tubpar[2] = 0.2/2.;
+  gMC->Gsvolu("R017", "TUBE", idtmed[10], tubpar, 3);
+  
+  //-- Position R017 inside P017
+  gMC->Gspos("R017", 1, "P017", 7.7, 0., 0., 0, "ONLY");
+  
+  //-- BEAM PIPE BETWEEN END OF CONICAL PIPE AND BEGINNING OF D2
+  
+  tubpar[0] = 5./2.;
+  tubpar[1] = 5.4/2.;
+  tubpar[2] = 678./2.;
+  gMC->Gsvolu("P018", "TUBE", idtmed[5], tubpar, 3);
+
+  tubpar[0] = 7./2.;
+  tubpar[1] = 7.4/2.;
+  tubpar[2] = 678./2.;
+  gMC->Gsvolu("P019", "TUBE", idtmed[5], tubpar, 3);
+  
+  // -- ROTATE PIPES 
+
+  AliMatrix(im1, 90.-0.071, 0., 90., 90., .071, 180.);
+  angle = .071*kDegrad;
+  gMC->Gspos("P018", 1, "ZDC ", TMath::Sin(angle) * 645. / 2. - 9.7 + 
+              TMath::Sin(angle) * 945. / 2., 0., tubpar[2] + zd1, im1, "ONLY");
+  AliMatrix(im2, 90.+0.071, 0., 90., 90., .071, 0.);
+  gMC->Gspos("P019", 1, "ZDC ", 9.7 - TMath::Sin(angle) * 645. / 2., 0., 
+              tubpar[2] + zd1, im2, "ONLY");
+  
+  // --  END OF BEAM PIPE VOLUME DEFINITION. MAGNET DEFINITION FOLLOWS 
+  //     (LHC OPTICS 6) 
+  
+  // -- COMPENSATOR DIPOLE (MBXW) 
+  //     GAP (VACUUM WITH MAGNETIC FIELD) 
+  
+  tubpar[0] = 0.;
+  tubpar[1] = 4.5;
+  tubpar[2] = 340./2.;
+  gMC->Gsvolu("MBXW", "TUBE", idtmed[11], tubpar, 3);
+  gMC->Gspos("MBXW", 1, "ZDC ", 0., 0., tubpar[2] + 805., 0, "ONLY");
+  
+  // --  YOKE (IRON WITHOUT MAGNETIC FIELD) 
+  
+  tubpar[0] = 4.5;
+  tubpar[1] = 55.;
+  tubpar[2] = 340./2.;
+  gMC->Gsvolu("YMBX", "TUBE", idtmed[5], tubpar, 3);
+  gMC->Gspos("YMBX", 1, "ZDC ", 0., 0., tubpar[2] + 805., 0, "ONLY");
+  
+  // -- COMPENSATOR DIPOLE (MCBWA) 
+  //     GAP (VACUUM WITH MAGNETIC FIELD) 
+  
+  tubpar[0] = 0.;
+  tubpar[1] = 4.5;
+  tubpar[2] = 170./2.;
+  gMC->Gsvolu("MCBW", "TUBE", idtmed[11], tubpar, 3);
+  gMC->Gspos("MCBW", 1, "ZDC ", 0., 0., tubpar[2] + 1921.6, 0, "ONLY");
+  
+  // --  YOKE (IRON WITHOUT MAGNETIC FIELD) 
+  
+  tubpar[0] = 4.5;
+  tubpar[1] = 55.;
+  tubpar[2] = 170./2.;
+  gMC->Gsvolu("YMCB", "TUBE", idtmed[5], tubpar, 3);
+  gMC->Gspos("YMCB", 1, "ZDC ", 0., 0., tubpar[2] + 1921.6, 0, "ONLY");
+  
+  // -- INNER TRIPLET 
+  
+  zq = 2300.;
+  
+  // -- DEFINE MQXL AND MQX QUADRUPOLE ELEMENT 
+  
+  //     MQXL 
+  // --  GAP (VACUUM WITH MAGNETIC FIELD) 
+  
+  tubpar[0] = 0.;
+  tubpar[1] = 3.5;
+  tubpar[2] = 630./2.;
+  gMC->Gsvolu("MQXL", "TUBE", idtmed[11], tubpar, 3);
+  
+  // --  YOKE 
+  
+  tubpar[0] = 3.5;
+  tubpar[1] = 22.;
+  tubpar[2] = 630./2.;
+  gMC->Gsvolu("YMQL", "TUBE", idtmed[5], tubpar, 3);
+  
+  gMC->Gspos("MQXL", 1, "ZDC ", 0., 0., tubpar[2] + zq, 0, "ONLY");
+  gMC->Gspos("YMQL", 1, "ZDC ", 0., 0., tubpar[2] + zq, 0, "ONLY");
+  
+  gMC->Gspos("MQXL", 2, "ZDC ", 0., 0., tubpar[2] + zq + 2430., 0, "ONLY");
+  gMC->Gspos("YMQL", 2, "ZDC ", 0., 0., tubpar[2] + zq + 2430., 0, "ONLY");
+  
+  // --  MQX 
+  // --  GAP (VACUUM WITH MAGNETIC FIELD) 
+  
+  tubpar[0] = 0.;
+  tubpar[1] = 3.5;
+  tubpar[2] = 550./2.;
+  gMC->Gsvolu("MQX ", "TUBE", idtmed[11], tubpar, 3);
+  
+  // --  YOKE 
+  
+  tubpar[0] = 3.5;
+  tubpar[1] = 22.;
+  tubpar[2] = 550./2.;
+  gMC->Gsvolu("YMQ ", "TUBE", idtmed[5], tubpar, 3);
+  
+  gMC->Gspos("MQX ", 1, "ZDC ", 0., 0., tubpar[2] + zq + 880.,  0, "ONLY");
+  gMC->Gspos("YMQ ", 1, "ZDC ", 0., 0., tubpar[2] + zq + 880.,  0, "ONLY");
+  
+  gMC->Gspos("MQX ", 2, "ZDC ", 0., 0., tubpar[2] + zq + 1530., 0, "ONLY");
+  gMC->Gspos("YMQ ", 2, "ZDC ", 0., 0., tubpar[2] + zq + 1530., 0, "ONLY");
+  
+  // -- SEPARATOR DIPOLE D1 
+  
+  zd1 = 5838.3;
+  
+  // --  GAP (VACUUM WITH MAGNETIC FIELD) 
+  
+  tubpar[0] = 0.;
+  tubpar[1] = 7.5/2.;
+  tubpar[2] = 945./2.;
+  gMC->Gsvolu("D1  ", "TUBE", idtmed[11], tubpar, 3);
+  
+  // --  YOKE 
+  
+  tubpar[0] = 0.;
+  tubpar[1] = 110./2;
+  tubpar[2] = 945./2.;
+  gMC->Gsvolu("YD1 ", "TUBE", idtmed[5], tubpar, 3);
+  
+  gMC->Gspos("YD1 ", 1, "ZDC ", 0., 0., tubpar[2] + zd1, 0, "ONLY");
+  gMC->Gspos("D1  ", 1, "YD1 ", 0., 0., 0., 0, "ONLY");
+  
+  // -- DIPOLE D2 
+  
+  zd2 = 12147.6;
+  
+  // --  GAP (VACUUM WITH MAGNETIC FIELD) 
+  
+  tubpar[0] = 0.;
+  tubpar[1] = 7.5/2.;
+  tubpar[2] = 945./2.;
+  gMC->Gsvolu("D2  ", "TUBE", idtmed[11], tubpar, 3);
+  
+  // --  YOKE 
+  
+  tubpar[0] = 0.;
+  tubpar[1] = 55.;
+  tubpar[2] = 945./2.;
+  gMC->Gsvolu("YD2 ", "TUBE", idtmed[5], tubpar, 3);
+  
+  gMC->Gspos("YD2 ", 1, "ZDC ", 0., 0., tubpar[2] + zd2, 0, "ONLY");
+  
+  gMC->Gspos("D2  ", 1, "YD2 ", -9.7, 0., 0., 0, "ONLY");
+  gMC->Gspos("D2  ", 2, "YD2 ",  9.7, 0., 0., 0, "ONLY");
+  
+  // -- END OF MAGNET DEFINITION 
+}
+  
+//_____________________________________________________________________________
+void AliZDCv1::CreateZDC()
+{
+  
+  Int_t *idtmed = fIdtmed->GetArray();
+  
+  //-- Create calorimeters geometry
+  
+  //--> Neutron calorimeter (ZN) 
+  
+  gMC->Gsvolu("ZNEU", "BOX ", idtmed[1], fDimZN, 3); // Passive material  
+  gMC->Gsvolu("ZNF1", "TUBE", idtmed[3], fFibZN, 3); // Active material
+  gMC->Gsvolu("ZNF2", "TUBE", idtmed[4], fFibZN, 3); 
+  gMC->Gsvolu("ZNF3", "TUBE", idtmed[4], fFibZN, 3); 
+  gMC->Gsvolu("ZNF4", "TUBE", idtmed[3], fFibZN, 3); 
+  gMC->Gsvolu("ZNG1", "BOX ", idtmed[12], fGrvZN, 3); // Empty grooves 
+  gMC->Gsvolu("ZNG2", "BOX ", idtmed[12], fGrvZN, 3); 
+  gMC->Gsvolu("ZNG3", "BOX ", idtmed[12], fGrvZN, 3); 
+  gMC->Gsvolu("ZNG4", "BOX ", idtmed[12], fGrvZN, 3); 
+  
+  // Divide ZNEU in towers (for hits purposes) 
+  
+  gMC->Gsdvn("ZNTX", "ZNEU", fTowZN[0], 1); // x-tower 
+  gMC->Gsdvn("ZN1 ", "ZNTX", fTowZN[1], 2); // y-tower
+  
+  //-- Divide ZN1 in minitowers 
+  //  fDivZN[0]= NUMBER OF FIBERS PER TOWER ALONG X-AXIS, 
+  //  fDivZN[1]= NUMBER OF FIBERS PER TOWER ALONG Y-AXIS
+  //  (4 fibres per minitower) 
+  
+  gMC->Gsdvn("ZNSL", "ZN1 ", fDivZN[1], 2); // Slices 
+  gMC->Gsdvn("ZNST", "ZNSL", fDivZN[0], 1); // Sticks
+  
+  // --- Position the empty grooves in the sticks (4 grooves per stick)
+  Float_t dx = fDimZN[0] / fDivZN[0] / 4.;
+  Float_t dy = fDimZN[1] / fDivZN[1] / 4.;
+  
+  gMC->Gspos("ZNG1", 1, "ZNST", 0.-dx, 0.+dy, 0., 0, "ONLY");
+  gMC->Gspos("ZNG2", 1, "ZNST", 0.+dx, 0.+dy, 0., 0, "ONLY");
+  gMC->Gspos("ZNG3", 1, "ZNST", 0.-dx, 0.-dy, 0., 0, "ONLY");
+  gMC->Gspos("ZNG4", 1, "ZNST", 0.+dx, 0.-dy, 0., 0, "ONLY");
+  
+  // --- Position the fibers in the grooves 
+  gMC->Gspos("ZNF1", 1, "ZNG1", 0., 0., 0., 0, "ONLY");
+  gMC->Gspos("ZNF2", 1, "ZNG2", 0., 0., 0., 0, "ONLY");
+  gMC->Gspos("ZNF3", 1, "ZNG3", 0., 0., 0., 0, "ONLY");
+  gMC->Gspos("ZNF4", 1, "ZNG4", 0., 0., 0., 0, "ONLY");
+  
+  // --- Position the neutron calorimeter in ZDC 
+  gMC->Gspos("ZNEU", 1, "ZDC ", fPosZN[0], fPosZN[1], fPosZN[2] + fDimZN[2], 0, "ONLY");
+  
+  //--> Proton calorimeter 
+  
+  gMC->Gsvolu("ZPRO", "BOX ", idtmed[2], fDimZP, 3); // Passive material
+  gMC->Gsvolu("ZPF1", "TUBE", idtmed[3], fFibZP, 3); // Active material
+  gMC->Gsvolu("ZPF2", "TUBE", idtmed[4], fFibZP, 3); 
+  gMC->Gsvolu("ZPF3", "TUBE", idtmed[4], fFibZP, 3); 
+  gMC->Gsvolu("ZPF4", "TUBE", idtmed[3], fFibZP, 3); 
+  gMC->Gsvolu("ZPG1", "BOX ", idtmed[12], fGrvZP, 3); // Empty grooves 
+  gMC->Gsvolu("ZPG2", "BOX ", idtmed[12], fGrvZP, 3); 
+  gMC->Gsvolu("ZPG3", "BOX ", idtmed[12], fGrvZP, 3); 
+  gMC->Gsvolu("ZPG4", "BOX ", idtmed[12], fGrvZP, 3); 
+    
+  //-- Divide ZPRO in towers(for hits purposes) 
+  
+  gMC->Gsdvn("ZPTX", "ZPRO", fTowZP[0], 1); // x-tower 
+  gMC->Gsdvn("ZP1 ", "ZPTX", fTowZP[1], 2); // y-tower
+  
+  
+  //-- Divide ZP1 in minitowers 
+  //  fDivZP[0]= NUMBER OF FIBERS ALONG X-AXIS PER MINITOWER, 
+  //  fDivZP[1]= NUMBER OF FIBERS ALONG Y-AXIS PER MINITOWER
+  //  (4 fiber per minitower) 
+  
+  gMC->Gsdvn("ZPSL", "ZP1 ", fDivZP[1], 2); // Slices 
+  gMC->Gsdvn("ZPST", "ZPSL", fDivZP[0], 1); // Sticks
+  
+  // --- Position the empty grooves in the sticks (4 grooves per stick)
+  dx = fDimZP[0] / fTowZP[0] / fDivZP[0] / 2.;
+  dy = fDimZP[1] / fTowZP[1] / fDivZP[1] / 2.;
+  
+  gMC->Gspos("ZPG1", 1, "ZPST", 0.-dx, 0.+dy, 0., 0, "ONLY");
+  gMC->Gspos("ZPG2", 1, "ZPST", 0.+dx, 0.+dy, 0., 0, "ONLY");
+  gMC->Gspos("ZPG3", 1, "ZPST", 0.-dx, 0.-dy, 0., 0, "ONLY");
+  gMC->Gspos("ZPG4", 1, "ZPST", 0.+dx, 0.-dy, 0., 0, "ONLY");
+  
+  // --- Position the fibers in the grooves 
+  gMC->Gspos("ZPF1", 1, "ZPG1", 0., 0., 0., 0, "ONLY");
+  gMC->Gspos("ZPF2", 1, "ZPG2", 0., 0., 0., 0, "ONLY");
+  gMC->Gspos("ZPF3", 1, "ZPG3", 0., 0., 0., 0, "ONLY");
+  gMC->Gspos("ZPF4", 1, "ZPG4", 0., 0., 0., 0, "ONLY");
+  
+
+  // --- Position the proton calorimeter in ZDC 
+  gMC->Gspos("ZPRO", 1, "ZDC ", fPosZP[0], fPosZP[1], fPosZP[2] + fDimZP[2], 0, "ONLY");
+  
+}
+//_____________________________________________________________________________
+void AliZDCv1::DrawModule()
+{
+  //
+  // Draw a shaded view of the Zero Degree Calorimeter version 1
+  //
+
+  // Set everything unseen
+  gMC->Gsatt("*", "seen", -1);
+  // 
+  // Set ALIC mother transparent
+  gMC->Gsatt("ALIC","SEEN",0);
+  //
+  // Set the volumes visible
+  gMC->Gsatt("ZDC ","SEEN",0);
+  gMC->Gsatt("P001","SEEN",1);
+  gMC->Gsatt("E001","SEEN",1);
+  gMC->Gsatt("E002","SEEN",1);
+  gMC->Gsatt("E003","SEEN",1);
+  gMC->Gsatt("E004","SEEN",1);
+  gMC->Gsatt("C001","SEEN",1);
+  gMC->Gsatt("P002","SEEN",1);
+  gMC->Gsatt("P003","SEEN",1);
+  gMC->Gsatt("P004","SEEN",1);
+  gMC->Gsatt("P005","SEEN",1);
+  gMC->Gsatt("P006","SEEN",1);
+  gMC->Gsatt("P007","SEEN",1);
+  gMC->Gsatt("P008","SEEN",1);
+  gMC->Gsatt("P009","SEEN",1);
+  gMC->Gsatt("P010","SEEN",1);
+  gMC->Gsatt("P011","SEEN",1);
+  gMC->Gsatt("P012","SEEN",1);
+  gMC->Gsatt("P013","SEEN",1);
+  gMC->Gsatt("P014","SEEN",1);
+  gMC->Gsatt("P015","SEEN",1);
+  gMC->Gsatt("P016","SEEN",1);
+  gMC->Gsatt("P017","SEEN",1);
+  gMC->Gsatt("Q017","SEEN",1);
+  gMC->Gsatt("R017","SEEN",1);
+  gMC->Gsatt("P018","SEEN",1);
+  gMC->Gsatt("P019","SEEN",1);
+  gMC->Gsatt("MBXW","SEEN",1);
+  gMC->Gsatt("YMBX","SEEN",1);
+  gMC->Gsatt("MCBW","SEEN",1);
+  gMC->Gsatt("YMCB","SEEN",1);
+  gMC->Gsatt("MQXL","SEEN",1);
+  gMC->Gsatt("YMQL","SEEN",1);
+  gMC->Gsatt("MQX ","SEEN",1);
+  gMC->Gsatt("YMQ ","SEEN",1);
+  gMC->Gsatt("D1  ","SEEN",1);
+  gMC->Gsatt("YD1 ","SEEN",1);
+  gMC->Gsatt("D2  ","SEEN",1);
+  gMC->Gsatt("YD2 ","SEEN",1);
+  gMC->Gsatt("ZNEU","SEEN",0);
+  gMC->Gsatt("ZNF1","SEEN",0);
+  gMC->Gsatt("ZNF2","SEEN",0);
+  gMC->Gsatt("ZNF3","SEEN",0);
+  gMC->Gsatt("ZNF4","SEEN",0);
+  gMC->Gsatt("ZNG1","SEEN",0);
+  gMC->Gsatt("ZNG2","SEEN",0);
+  gMC->Gsatt("ZNG3","SEEN",0);
+  gMC->Gsatt("ZNG4","SEEN",0);
+  gMC->Gsatt("ZNTX","SEEN",0);
+  gMC->Gsatt("ZN1 ","COLO",2); 
+  gMC->Gsatt("ZN1 ","SEEN",1);
+  gMC->Gsatt("ZNSL","SEEN",0);
+  gMC->Gsatt("ZNST","SEEN",0);
+  gMC->Gsatt("ZPRO","SEEN",0);
+  gMC->Gsatt("ZPF1","SEEN",0);
+  gMC->Gsatt("ZPF2","SEEN",0);
+  gMC->Gsatt("ZPF3","SEEN",0);
+  gMC->Gsatt("ZPF4","SEEN",0);
+  gMC->Gsatt("ZPG1","SEEN",0);
+  gMC->Gsatt("ZPG2","SEEN",0);
+  gMC->Gsatt("ZPG3","SEEN",0);
+  gMC->Gsatt("ZPG4","SEEN",0);
+  gMC->Gsatt("ZPTX","SEEN",0);
+  gMC->Gsatt("ZP1 ","COLO",2); 
+  gMC->Gsatt("ZP1 ","SEEN",1);
+  gMC->Gsatt("ZPSL","SEEN",0);
+  gMC->Gsatt("ZPST","SEEN",0);
+  
+  //
+  gMC->Gdopt("hide", "on");
+  gMC->Gdopt("shad", "on");
+  gMC->Gsatt("*", "fill", 7);
+  gMC->SetClipBox(".");
+  gMC->SetClipBox("*", 0, 100, -100, 100, 12000, 16000);
+  gMC->DefaultRange();
+  gMC->Gdraw("alic", 40, 30, 0, 488, 220, .07, .07);
+  gMC->Gdhead(1111, "Zero Degree Calorimeter Version 1");
+  gMC->Gdman(18, 4, "MAN");
+}
+
+//_____________________________________________________________________________
+void AliZDCv1::CreateMaterials()
+{
+  //
+  // Create Materials for the Zero Degree Calorimeter
+  //
+  // Origin    : E. Scomparin 
+  
+  Int_t *idtmed = fIdtmed->GetArray();
+  
+  Float_t dens, ubuf[1], wmat[2];
+  Int_t isvolActive;
+  Float_t a[2];
+  Int_t i;
+  Float_t z[2], epsil=0.001, stmin=0.01;
+  Int_t isvol;
+  Float_t fieldm = gAlice->Field()->Max();
+  Int_t inofld;
+  Float_t deemax=-1;
+  Float_t tmaxfd=gAlice->Field()->Max();
+  Int_t isxfld = gAlice->Field()->Integ();
+  Float_t stemax;
+  
+  // --- Store in UBUF r0 for nuclear radius calculation R=r0*A**1/3 
+
+  // --- Tantalum -> ZN passive material
+  ubuf[0] = 1.1;
+  AliMaterial(1, "TANT", 180.95, 73., 16.65, .4, 11.9, ubuf, 1);
+    
+  // --- Tungsten 
+//  ubuf[0] = 1.11;
+//  AliMaterial(1, "TUNG", 183.85, 74., 19.3, .35, 10.3, ubuf, 1);
+  
+  // --- Brass (CuZn)  -> ZP passive material
+  dens = 8.48;
+  a[0] = 63.546;
+  a[1] = 65.39;
+  z[0] = 29.;
+  z[1] = 30.;
+  wmat[0] = .63;
+  wmat[1] = .37;
+  AliMixture(2, "BRASS               ", a, z, dens, 2, wmat);
+  
+  // --- SiO2 
+  dens = 2.64;
+  a[0] = 28.086;
+  a[1] = 15.9994;
+  z[0] = 14.;
+  z[1] = 8.;
+  wmat[0] = 1.;
+  wmat[1] = 2.;
+  AliMixture(3, "SIO2                ", a, z, dens, -2, wmat);
+
+  // --- Copper 
+//  ubuf[0] = 1.1;
+//  AliMaterial(7, "COPP", 63.54, 29., 8.96, 1.4, 0., ubuf, 1);
+  
+  
+  // --- Lead 
+//  ubuf[0] = 1.12;
+//  AliMaterial(6, "LEAD", 207.19, 82., 11.35, .56, 18.5, ubuf, 1);
+  
+  // --- Iron 
+  ubuf[0] = 1.1;
+  AliMaterial(5, "IRON", 55.85, 26., 7.87, 1.76, 0., ubuf, 1);
+  
+  // --- Vacuum (no magnetic field) 
+  AliMaterial(10, "VOID", 1e-16, 1e-16, 1e-16, 1e16, 1e16, ubuf,0);
+  
+  // --- Vacuum (with magnetic field) 
+  AliMaterial(11, "VOIM", 1e-16, 1e-16, 1e-16, 1e16, 1e16, ubuf,0);
+  
+  // --- Air (no magnetic field)
+  AliMaterial(12, "Air    $", 14.61, 7.3, .001205, 30420., 67500., ubuf, 0);
+  
+  // ---  Definition of tracking media: 
+  
+  // --- Tantalum = 1 ; 
+  // --- Brass = 2 ; 
+  // --- Fibers (SiO2) = 3 ; 
+  // --- Fibers (SiO2) = 4 ; 
+  // --- Iron = 5 ; 
+  // --- Lead = 6 ; 
+  // --- Vacuum (no field) = 10 
+  // --- Vacuum (with field) = 11 
+  // --- Air (no field) = 12 
+  
+  
+  // --- Tracking media parameters 
+  epsil  = .01;
+  stemax = 1.;
+  isvol  = 0;
+  isvolActive = 1;
+  inofld = 0;
+  fieldm = 0.;
+  
+  AliMedium(1, "ZTANT", 1, isvolActive, inofld, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
+//  AliMedium(1, "ZW", 1, isvolActive, inofld, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(2, "ZBRASS", 2, isvolActive, inofld, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(3, "ZSIO2", 3, isvolActive, inofld, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(4, "ZQUAR", 3, isvolActive, inofld, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
+//  AliMedium(7, "ZCOPP", 7, isvolActive, inofld, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
+//  AliMedium(6, "ZLEAD", 6, isvolActive, inofld, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(5, "ZIRON", 5, isvol, inofld, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(10, "ZVOID", 10, isvol, inofld, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
+  AliMedium(12, "ZAIR", 12, 0, inofld, fieldm, tmaxfd, stemax,deemax, epsil, stmin);
+  
+  fieldm = 45.;
+  AliMedium(11, "ZVOIM", 11, isvol, isxfld, fieldm, tmaxfd, stemax, deemax, epsil, stmin);
+  
+  // Thresholds for showering in the ZDCs 
+  
+  i = 1;
+  gMC->Gstpar(idtmed[i], "CUTGAM", .001);
+  gMC->Gstpar(idtmed[i], "CUTELE", .001);
+  gMC->Gstpar(idtmed[i], "CUTNEU", .01);
+  gMC->Gstpar(idtmed[i], "CUTHAD", .01);
+  i = 2;
+  gMC->Gstpar(idtmed[i], "CUTGAM", .001);
+  gMC->Gstpar(idtmed[i], "CUTELE", .001);
+  gMC->Gstpar(idtmed[i], "CUTNEU", .01);
+  gMC->Gstpar(idtmed[i], "CUTHAD", .01);
+  
+  // Avoid too detailed showering along the beam line 
+  
+  i = 5;
+  gMC->Gstpar(idtmed[i], "CUTGAM", .1);
+  gMC->Gstpar(idtmed[i], "CUTELE", .1);
+  gMC->Gstpar(idtmed[i], "CUTNEU", 1.);
+  gMC->Gstpar(idtmed[i], "CUTHAD", 1.);
+  
+  // Avoid interaction in fibers (only energy loss allowed) 
+  i = 3;
+  gMC->Gstpar(idtmed[i], "DCAY", 0.);
+  gMC->Gstpar(idtmed[i], "MULS", 0.);
+  gMC->Gstpar(idtmed[i], "PFIS", 0.);
+  gMC->Gstpar(idtmed[i], "MUNU", 0.);
+  gMC->Gstpar(idtmed[i], "LOSS", 1.);
+  gMC->Gstpar(idtmed[i], "PHOT", 0.);
+  gMC->Gstpar(idtmed[i], "COMP", 0.);
+  gMC->Gstpar(idtmed[i], "PAIR", 0.);
+  gMC->Gstpar(idtmed[i], "BREM", 0.);
+  gMC->Gstpar(idtmed[i], "DRAY", 0.);
+  gMC->Gstpar(idtmed[i], "ANNI", 0.);
+  gMC->Gstpar(idtmed[i], "HADR", 0.);
+  i = 4;
+  gMC->Gstpar(idtmed[i], "DCAY", 0.);
+  gMC->Gstpar(idtmed[i], "MULS", 0.);
+  gMC->Gstpar(idtmed[i], "PFIS", 0.);
+  gMC->Gstpar(idtmed[i], "MUNU", 0.);
+  gMC->Gstpar(idtmed[i], "LOSS", 1.);
+  gMC->Gstpar(idtmed[i], "PHOT", 0.);
+  gMC->Gstpar(idtmed[i], "COMP", 0.);
+  gMC->Gstpar(idtmed[i], "PAIR", 0.);
+  gMC->Gstpar(idtmed[i], "BREM", 0.);
+  gMC->Gstpar(idtmed[i], "DRAY", 0.);
+  gMC->Gstpar(idtmed[i], "ANNI", 0.);
+  gMC->Gstpar(idtmed[i], "HADR", 0.);
+  //
+  fMedSensF1 = idtmed[3];  // Sensitive volume: fibres type 1
+  fMedSensF2 = idtmed[4];  // Sensitive volume: fibres type 2
+  fMedSensZN = idtmed[1];  // Sensitive volume: ZN passive material
+  fMedSensZP = idtmed[2];  // Sensitive volume: ZP passive material
+  fMedSensGR = idtmed[12]; // Sensitive volume: air into the grooves
+} 
+
+//_____________________________________________________________________________
+void AliZDCv1::Init()
+{
+ InitTables();
+
+}
+
+//_____________________________________________________________________________
+void AliZDCv1::InitTables()
+{
+  //Initialize parameters for light tables and read them
+  fNalfan = 90;
+  fNalfap = 90;
+  fNben = 18;
+  fNbep = 28;
+  
+  FILE *fp1, *fp2, *fp3, *fp4, *fp5, *fp6, *fp7, *fp8;
+
+  if((fp1 = fopen("light22620362207s","r")) == NULL){
+     printf("Cannot open file fp1 \n");
+     return;
+  }
+  if((fp2 = fopen("light22620362208s","r")) == NULL){
+     printf("Cannot open file fp2 \n");
+     return;
+  }  
+  if((fp3 = fopen("light22620362209s","r")) == NULL){
+     printf("Cannot open file fp3 \n");
+     return;
+  }
+  if((fp4 = fopen("light22620362210s","r")) == NULL){
+     printf("Cannot open file fp4 \n");
+     return;
+  }
+//  printf(" --- Reading light tables for ZN \n");
+  for(int k=0; k<fNalfan; k++){
+     for(int j=0; j<fNben; j++){
+       fscanf(fp1,"%f",&fTablen[0][k][j]);
+       fscanf(fp2,"%f",&fTablen[1][k][j]);
+       fscanf(fp3,"%f",&fTablen[2][k][j]);
+       fscanf(fp4,"%f",&fTablen[3][k][j]);
+     } 
+  }
+  fclose(fp1);
+  fclose(fp2);
+  fclose(fp3);
+  fclose(fp4);
+  
+  if((fp5 = fopen("light22620552207s","r")) == NULL){
+     printf("Cannot open file fp5 \n");
+     return;
+  }
+  if((fp6 = fopen("light22620552208s","r")) == NULL){
+     printf("Cannot open file fp6 \n");
+     return;
+  }
+  if((fp7 = fopen("light22620552209s","r")) == NULL){
+     printf("Cannot open file fp7 \n");
+     return;
+  }
+  if((fp8 = fopen("light22620552210s","r")) == NULL){
+     printf("Cannot open file fp8 \n");
+     return;
+  }
+//  printf(" --- Reading light tables for ZP \n");
+  for(int k=0; k<fNalfap; k++){
+     for(int j=0; j<fNbep; j++){
+       fscanf(fp5,"%f",&fTablep[0][k][j]);
+       fscanf(fp6,"%f",&fTablep[1][k][j]);
+       fscanf(fp7,"%f",&fTablep[2][k][j]);
+       fscanf(fp8,"%f",&fTablep[3][k][j]);
+     } 
+  }
+  fclose(fp5);
+  fclose(fp6);
+  fclose(fp7);
+  fclose(fp8);
+}
+
+//_____________________________________________________________________________
+void AliZDCv1::StepManager()
+{
+  //
+  // Routine called at every step in the Zero Degree Calorimeters
+  //
+
+  Int_t vol[2], ibeta, ialfa, ibe;
+  Float_t x[3], xdet[3], destep, hits[9], m, ekin, um[3], ud[3], be, radius, out;
+  TLorentzVector s, p;
+  const char *knamed;
+  
+  if((gMC->GetMedium() == fMedSensZN) || (gMC->GetMedium() == fMedSensZP) ||
+     (gMC->GetMedium() == fMedSensGR) || (gMC->GetMedium() == fMedSensF1) ||
+     (gMC->GetMedium() == fMedSensF2)){
+        
+  //Particle coordinates 
+    gMC->TrackPosition(s);
+    for(Int_t j=0; j<=2; j++){
+       x[j] = s[j];
+    }
+    hits[0] = x[0];
+    hits[1] = x[1];
+    hits[2] = x[2];
+
+  // Determine in which ZDC the particle is
+    knamed = gMC->CurrentVolName();
+    if(!strncmp(knamed,"ZN",2))vol[0]=1;
+    if(!strncmp(knamed,"ZP",2))vol[0]=2;
+  
+  // Determine in which quadrant the particle is
+    
+    //Quadrant in ZN
+    gMC->Gmtod(x,xdet,1);
+    if(vol[0]==1){
+      if((xdet[0]<0.) && (xdet[1]>0.)) vol[1]=1;
+      if((xdet[0]>0.) && (xdet[1]>0.)) vol[1]=2;
+      if((xdet[0]<0.) && (xdet[1]<0.)) vol[1]=3;
+      if((xdet[0]>0.) && (xdet[1]<0.)) vol[1]=4;
+    }
+    
+    //Quadrant in ZP
+    if(vol[0]==2){
+      Float_t xqZP = xdet[0]/(fDimZP[0]/2);
+      for(int i=1; i<=4; i++){
+         if(xqZP>(i-3) && xqZP<(i-2)){
+          vol[1] = i;
+          break;
+       }
+     }
+    }
+//    printf(" -> Det. %d Quad. %d \n", vol[0], vol[1]);
+
+  // Store impact point and kinetic energy of the ENTERING particle
+    
+//    Int_t Curtrack = gAlice->CurrentTrack();
+//    Int_t Prim = gAlice->GetPrimary(Curtrack);
+//    printf ("Primary: %d, Current Track: %d \n", Prim, Curtrack); 
+    
+//    if(Curtrack==Prim){
+      if(gMC->IsTrackEntering()){
+        //Particle energy
+        gMC->TrackMomentum(p);
+//      printf("p[0] = %f, p[1] = %f, p[2] = %f, p[3] = %f \n", 
+//                 p[0], p[1], p[2], p[3]);
+        hits[3] = p[3];
+
+        // Impact point on ZN  
+        hits[4] = xdet[0];
+        hits[5] = xdet[1];
+        hits[7] = 0;
+        hits[8] = 0;
+        hits[9] = 0;
+
+//        printf(" hits[2] = %f \n",hits[2]);
+        AddHit(gAlice->CurrentTrack(), vol, hits);
+      }
+//    }
+             
+      // Charged particles -> Energy loss
+      if((destep=gMC->Edep())){
+         if(gMC->IsTrackStop()){
+           gMC->TrackMomentum(p);
+          m = gMC->TrackMass();
+          ekin = p[3]-m;
+          if(ekin<0.) printf("ATTENTION!!!!!!!!!!!!!!! ->      ekin = %f <0 (?)",ekin);
+          hits[9] = ekin;
+          hits[7] = 0.;
+          hits[8] = 0.;
+          AddHit(gAlice->CurrentTrack(), vol, hits);
+          }
+        else{
+          hits[9] = destep;
+          hits[7] = 0.;
+          hits[8] = 0.;
+          AddHit(gAlice->CurrentTrack(), vol, hits);
+          }
+//      printf("       -> Charged particle -> Dep. E = %f eV \n",hits[8]);
+        }
+//      printf(" \n");
+  }
+
+
+  // *** Light production in fibres 
+  if((gMC->GetMedium() == fMedSensF1) || (gMC->GetMedium() == fMedSensF2)){
+//    printf("%%%%%%%%%%%%%%%% Particle in fibre %%%%%%%%%%%%%%%%\n");
+
+     //Select charged particles
+     if((destep=gMC->Edep())){
+//       printf("              -> CHARGED particle!!! \n");
+
+       // Particle velocity
+       gMC->TrackMomentum(p);
+       Float_t ptot=TMath::Sqrt(p[0]*p[0]+p[1]*p[1]+p[2]*p[2]);
+       Float_t beta =  ptot/p[3];
+//       printf("p[0] = %f, p[1] = %f, p[2] = %f, p[3] = %f, ptot = %f \n",
+//              p[0], p[1], p[2], p[3], ptot);
+//       Int_t pcID = gMC->TrackPid();
+//       printf("      Pc %d in quadrant %d -> beta = %f \n", pcID, vol[1], beta);
+       if(beta<0.67) return;
+       if((beta>=0.67) && (beta<=0.75)) ibeta = 0;
+       if((beta>0.75)  && (beta<=0.85)) ibeta = 1;
+       if((beta>0.85)  && (beta<=0.95)) ibeta = 2;
+       if((beta>0.95)  && (beta<=1.00)) ibeta = 3;
+       // Angle between particle trajectory and fibre axis
+       // 1 -> Momentum directions
+       um[0] = p[0]/ptot;
+       um[1] = p[1]/ptot;
+       um[2] = p[2]/ptot;
+       gMC->Gmtod(um,ud,2);
+       // 2 -> Angle < limit angle
+       Double_t alfar = TMath::ACos(ud[2]);
+       Double_t alfa = alfar*kRaddeg;
+       if(alfa>110.) return;
+       ialfa = Int_t(1.+alfa/2.);
+       // Distance between particle trajectory and fibre axis
+       gMC->TrackPosition(s);
+       for(Int_t j=0; j<=2; j++){
+         x[j] = s[j];
+       }
+       gMC->Gmtod(x,xdet,1);
+       if(TMath::Abs(ud[0])>0.00001){
+         Float_t dcoeff = ud[1]/ud[0];
+         be = TMath::Abs((xdet[1]-dcoeff*xdet[0])/TMath::Sqrt(dcoeff*dcoeff+1.));
+       }
+       else{
+         be = TMath::Abs(ud[0]);
+       }
+       if((vol[0]==1)) radius = fFibZN[1];
+       if((vol[0]==2)) radius = fFibZP[1];
+       ibe = Int_t(be*1000.+1);
+       //Looking into the light tables 
+       Float_t charge = gMC->TrackCharge();
+       
+       // (1)  ZN
+       if((vol[0]==1)) {
+         if(ibe>fNben) ibe=fNben;
+         out =  charge*charge*fTablen[ibeta][ialfa][ibe];
+//      printf("       -> fTablen [%d][%d][%d] = %f \n", 
+//             ibeta, ialfa, ibe, fTablen[ibeta][ialfa][ibe]);
+        if(gMC->GetMedium() == fMedSensF1){
+          hits[7] = out;       //fLightPMQ
+          hits[8] = 0;
+          hits[9] = 0;
+          AddHit(gAlice->CurrentTrack(), vol, hits);
+        }
+        else{
+          hits[7] = 0;
+          hits[8] = out;       //fLightPMC
+          hits[9] = 0;
+          AddHit(gAlice->CurrentTrack(), vol, hits);
+        }
+       } 
+       
+       // (2) ZP
+       if((vol[0]==2)) {
+         if(ibe>fNbep) ibe=fNbep;
+         out =  charge*charge*fTablep[ibeta][ialfa][ibe];
+//      printf("       -> fTablep [%d][%d][%d] = %f\n", 
+//             ibeta, ialfa, ibe, fTablen[ibeta][ialfa][ibe]);
+        if(gMC->GetMedium() == fMedSensF1){
+          hits[7] = out;       //fLightPMQ
+          hits[8] = 0;
+          hits[9] = 0;
+          AddHit(gAlice->CurrentTrack(), vol, hits);
+        }
+        else{
+          hits[7] = 0;
+          hits[8] = out;       //fLightPMC
+          hits[9] = 0;
+          AddHit(gAlice->CurrentTrack(), vol, hits);
+        }
+       } 
+     }
+//    printf("\n");
+   }
+}
diff --git a/ZDC/AliZDCv1.h b/ZDC/AliZDCv1.h
new file mode 100644 (file)
index 0000000..0223e05
--- /dev/null
@@ -0,0 +1,49 @@
+#ifndef ALIZDCV1_H
+#define ALIZDCV1_H
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
+/* $Id$ */
+
+////////////////////////////////////////////////
+//  Manager and hits classes for set:ZDC      //
+////////////////////////////////////////////////
+
+#include "AliZDC.h"
+
+//____________________________________________________________________________ 
+class AliZDCv1 : public AliZDC {
+
+public:
+  AliZDCv1();
+  AliZDCv1(const char *name, const char *title);
+  virtual      ~AliZDCv1() {}
+  virtual void  CreateGeometry();
+  virtual void  CreateBeamLine();
+  virtual void  CreateZDC();
+  virtual void  CreateMaterials();
+  virtual Int_t IsVersion() const {return 1;}
+  virtual void  DrawModule();
+  virtual void  Init();
+  virtual void  InitTables();
+  virtual void  StepManager();
+protected:
+  //Sensitive media
+  Int_t   fMedSensF1;  // Sensitive medium F1
+  Int_t   fMedSensF2;  // Sensitive medium F2
+  Int_t   fMedSensZP;  // Sensitive medium for Protons
+  Int_t   fMedSensZN;  // Sensitive medium for Neutrons
+  Int_t   fMedSensGR;  // Other sensitive medium
+  //Parameter for light tables
+  Int_t   fNalfan;             // Number of Alfa neutrons
+  Int_t   fNalfap;             // Number of Alfa protons
+  Int_t   fNben;               // Number of beta neutrons
+  Int_t   fNbep;               // Number of beta protons
+  Float_t fTablen[4][90][18];  // Table neutrons
+  Float_t fTablep[4][90][28];  // Table protons
+
+   ClassDef(AliZDCv1,1)  // Zero Degree Calorimeter version 1
+}; 
+#endif
index 3f39582..23c3954 100644 (file)
@@ -9,15 +9,11 @@ PACKAGE = ZDC
 
 # FORTRAN sources
 
-FSRCS        = AliZDCf.F
+FSRCS        =
 
 # C++ sources
 
-SRCS          = AliZDC.cxx
-
-# Fortran sources
-
-FSRCS         = AliZDCf.F 
+SRCS          = AliZDC.cxx AliZDCv1.cxx AliGenZDC.cxx
 
 # C++ Headers
 
@@ -47,7 +43,8 @@ ALLOBJS       = $(OBJS) $(FOBJS)
 
 # C++ compilation flags
 
-CXXFLAGS      = $(CXXOPTS) -I$(ROOTSYS)/include -I. -I$(ALICE_ROOT)/include
+CXXFLAGS      = $(CXXOPTS) -I$(ROOTSYS)/include -I. -I$(ALICE_ROOT)/include \
+               -I$(ALICE_ROOT)/RALICE
  
 # FORTRAN compilation flags
 
index 99939d4..0321f0b 100644 (file)
@@ -11,5 +11,6 @@
 #pragma link C++ class  AliZDC;
 #pragma link C++ class  AliZDCv1;
 #pragma link C++ class  AliZDChit;
+#pragma link C++ class  AliGenZDC;
 
 #endif
diff --git a/ZDC/light22620552207s b/ZDC/light22620552207s
new file mode 100644 (file)
index 0000000..c50bea1
--- /dev/null
@@ -0,0 +1,360 @@
+    1.32088    1.28430    1.28250    1.33145    1.29771    1.34512    1.34544
+    1.37421    1.39635    1.40491    1.45538    1.46353    1.52505    1.58486
+    1.64046    1.71847    1.79580    1.97353    2.09535    2.34709    2.55580
+    2.83165    3.06015    3.11148    2.98676    2.62173    1.95682    1.21771
+     .51371     .51763     .52202     .52913     .53679     .54212     .55973
+     .58842     .61866     .63025     .63417     .67153     .68537     .72506
+     .77023     .82163     .83885     .86159     .87370     .92019     .92430
+     .96413     .96964     .97214     .97157     .88516     .63346     .41642
+     .73903     .70780     .71528     .70924     .71021     .70533     .71700
+     .69365     .67492     .68623     .66356     .68323     .66603     .67273
+     .66934     .67860     .66946     .66205     .63779     .63190     .60570
+     .58678     .56697     .53184     .56315     .51164     .38954     .25091
+     .69387     .69390     .71152     .70388     .68119     .69511     .69393
+     .67197     .66233     .64225     .63559     .60728     .61459     .60911
+     .57662     .57579     .55611     .53686     .52141     .49750     .46156
+     .42840     .42014     .38968     .38032     .34792     .27744     .17388
+     .55226     .54452     .57246     .57809     .56694     .56995     .58041
+     .54985     .53512     .53326     .53850     .52580     .52856     .50386
+     .48701     .49460     .44999     .44063     .43002     .39971     .36586
+     .35849     .33646     .29917     .27049     .27235     .22350     .13906
+     .46937     .44987     .44533     .44917     .46980     .44061     .44220
+     .44099     .43056     .43196     .41945     .42254     .40933     .39856
+     .38788     .39705     .38937     .36504     .34419     .32355     .32461
+     .28879     .27220     .24980     .23000     .20144     .17679     .11787
+     .36120     .36776     .35403     .35695     .33761     .36689     .35165
+     .34810     .34303     .33993     .34043     .33063     .33341     .32244
+     .31720     .31283     .29045     .29217     .27841     .27410     .27307
+     .24922     .22873     .21188     .18748     .17491     .13980     .09709
+     .26956     .27174     .28062     .27569     .26703     .28123     .28170
+     .27096     .27403     .25699     .27171     .26180     .26936     .25281
+     .25728     .23963     .25610     .24056     .24158     .21923     .21480
+     .20006     .19158     .17196     .16282     .13621     .12594     .08496
+     .20995     .22360     .21568     .19670     .20185     .21103     .20908
+     .20627     .21639     .21263     .20808     .21039     .20170     .20014
+     .20079     .20577     .19723     .19734     .18631     .18305     .18643
+     .17520     .16185     .15009     .13791     .11232     .10271     .07773
+     .15571     .15363     .15350     .15769     .16243     .15118     .15373
+     .14546     .15593     .14517     .16492     .16089     .15190     .15044
+     .15865     .15101     .14700     .15220     .14459     .14797     .15811
+     .13857     .13660     .12911     .11830     .10904     .08794     .07048
+     .07245     .07381     .07131     .08443     .07049     .08182     .08523
+     .09132     .08915     .10025     .10014     .10276     .10428     .10345
+     .11913     .11756     .11632     .10917     .11764     .11407     .11787
+     .11249     .11400     .11043     .10410     .09277     .08009     .06317
+     .02002     .01864     .02186     .02231     .02186     .02300     .02554
+     .02623     .02646     .02739     .02567     .03446     .04785     .04699
+     .06237     .06052     .07296     .08891     .08083     .08382     .09073
+     .09163     .09703     .08700     .08727     .09129     .06651     .05582
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00046     .00115     .00414     .00506     .01105
+     .01388     .02744     .03144     .03559     .04765     .05976     .06516
+     .06879     .07210     .07728     .07847     .06925     .05928     .04728
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00069     .00207     .00694     .01106     .01590     .02628     .03440
+     .04338     .05716     .06645     .05792     .06589     .05848     .04667
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00069     .00161     .00402     .00963     .01516
+     .02454     .04041     .04661     .05110     .05692     .04801     .03910
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00023     .00326     .00748
+     .01059     .01858     .02996     .04307     .04531     .04342     .03126
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00069     .00142
+     .00541     .01029     .01987     .02999     .03438     .03589     .03012
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00115
+     .00188     .00544     .01291     .02134     .03360     .03096     .02361
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00092     .00270     .00838     .01375     .02489     .02880     .02009
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00046     .00142     .00452     .01026     .01558     .02561     .02138
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00046     .00221     .00767     .01417     .02171     .01579
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00023     .00168     .00342     .00561     .01936     .01697
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00069     .00208     .00986     .01367     .01053
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00063     .00247     .01245     .00973
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00096     .00262     .01105     .01227
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00185     .00612     .00828
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00023     .00300     .00567
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00271     .00468
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00023     .00115
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
diff --git a/ZDC/light22620552208s b/ZDC/light22620552208s
new file mode 100644 (file)
index 0000000..32bcc22
--- /dev/null
@@ -0,0 +1,360 @@
+     .43497     .48158     .47598     .46531     .46962     .44071     .47589
+     .46606     .51940     .45853     .48800     .48656     .50335     .52619
+     .52293     .56337     .56731     .61113     .64450     .63669     .70577
+     .78994     .74918     .89038    1.12243    1.46444    2.59706    2.20820
+     .14731     .16450     .17343     .16455     .15994     .14153     .16598
+     .19204     .17293     .15860     .17481     .18490     .15621     .16536
+     .17361     .22130     .19501     .19464     .19985     .22772     .26639
+     .24630     .25728     .30311     .35742     .50680     .79213     .76210
+     .09546     .09463     .09309     .10043     .07802     .12200     .10077
+     .08449     .09589     .10790     .09446     .10516     .10239     .13197
+     .13110     .13826     .11765     .11868     .13753     .14769     .15927
+     .15788     .16970     .17906     .22542     .33092     .51309     .45904
+     .04750     .06692     .07212     .07948     .08927     .07182     .09013
+     .07532     .08363     .07928     .09351     .07608     .07632     .07675
+     .07359     .09205     .11261     .10776     .09531     .09832     .08934
+     .12986     .15581     .16588     .18262     .23175     .37592     .29756
+     .07103     .04879     .04604     .05949     .05174     .06273     .06389
+     .06544     .05524     .04936     .06211     .06938     .06883     .08247
+     .07289     .06684     .08912     .06955     .08405     .07559     .11796
+     .08975     .14159     .14619     .13959     .24816     .30225     .23711
+     .05302     .05033     .05755     .06650     .04437     .05333     .05762
+     .05774     .06176     .05725     .05778     .05838     .04656     .06090
+     .06075     .07777     .06779     .08277     .06374     .09135     .09316
+     .10401     .12109     .11065     .16154     .21913     .23208     .18077
+     .03675     .04080     .04054     .04776     .05366     .06186     .05508
+     .04888     .05302     .04772     .03926     .04507     .06205     .06393
+     .05924     .06107     .06926     .05554     .06913     .08410     .09542
+     .09203     .09845     .12284     .16166     .18472     .14345     .10116
+     .03797     .03593     .05197     .04540     .04727     .05116     .04523
+     .05110     .03922     .05631     .07239     .04311     .04449     .06383
+     .05753     .05969     .07709     .06133     .09169     .09690     .11870
+     .10213     .10070     .14329     .18235     .14658     .13664     .09528
+     .05223     .07040     .05329     .03540     .05949     .04677     .05766
+     .04307     .06939     .05902     .05615     .06099     .06020     .07230
+     .05336     .07618     .07977     .08647     .08870     .10452     .10742
+     .11856     .18085     .20014     .17462     .14584     .11340     .08649
+     .05242     .05712     .05652     .05201     .04937     .05181     .05365
+     .03925     .05965     .06868     .07261     .06415     .06085     .07665
+     .09569     .10523     .09042     .10403     .12454     .13429     .19124
+     .16987     .17999     .19125     .15934     .14922     .09519     .07718
+     .06331     .04748     .05559     .07220     .08465     .08708     .07382
+     .08273     .06691     .08980     .09952     .10078     .09884     .12768
+     .14401     .16720     .15686     .17992     .19117     .18610     .21962
+     .20392     .20156     .20454     .17955     .14485     .11646     .07692
+     .21425     .19706     .19589     .19404     .21912     .20990     .20329
+     .20926     .22088     .23973     .23086     .27586     .27402     .26522
+     .21633     .25073     .21074     .30262     .23928     .22377     .21662
+     .21172     .19948     .16851     .16163     .16616     .09823     .06050
+     .39798     .36929     .41588     .40075     .37409     .38000     .36471
+     .32749     .39028     .30884     .33483     .31874     .28222     .33048
+     .29172     .31306     .26985     .28366     .24326     .26265     .21520
+     .19767     .18338     .18309     .14547     .11810     .08753     .05828
+     .40934     .46695     .41315     .40610     .43293     .40611     .41197
+     .40150     .36509     .43917     .34296     .39166     .34841     .32186
+     .30431     .31155     .28784     .28165     .27438     .22517     .20820
+     .19551     .20175     .18245     .14746     .12534     .08446     .05506
+     .39966     .41406     .40078     .37318     .40941     .43183     .38631
+     .38055     .40296     .38936     .36803     .37747     .37044     .30014
+     .32623     .28855     .30643     .24224     .23532     .24199     .21741
+     .20286     .19912     .17263     .13203     .13070     .08558     .04952
+     .36409     .39981     .40659     .38176     .38147     .37374     .40730
+     .38030     .40301     .36963     .36337     .35231     .32555     .31014
+     .31279     .31619     .25635     .24570     .23235     .20056     .19317
+     .19560     .16734     .14549     .12395     .08951     .07585     .05220
+     .35831     .35555     .29805     .35892     .31689     .35159     .34749
+     .32260     .32366     .32594     .32277     .31124     .30993     .27139
+     .29885     .31844     .25643     .23372     .24766     .22001     .20581
+     .17331     .16084     .16235     .10895     .10104     .07511     .04487
+     .29396     .27710     .28052     .32983     .26663     .28918     .28391
+     .27045     .29360     .26154     .27586     .27928     .26828     .26885
+     .26380     .23721     .23327     .26120     .22581     .19106     .17787
+     .16507     .14765     .12198     .12451     .10627     .05978     .04388
+     .23782     .24150     .22516     .21611     .23646     .20818     .23973
+     .23682     .24634     .20783     .21639     .21279     .23166     .22307
+     .23008     .24931     .24132     .20697     .17501     .17701     .17324
+     .16264     .13474     .11471     .10867     .10556     .06482     .03552
+     .13264     .13516     .16493     .13732     .12743     .16695     .17095
+     .16186     .17206     .15910     .17911     .19307     .20492     .16952
+     .19299     .17764     .15521     .17141     .18211     .18439     .14692
+     .13535     .11278     .10753     .10781     .10036     .06049     .03165
+     .00000     .00000     .00000     .00409     .01023     .02252     .02707
+     .03752     .04826     .05581     .07980     .07839     .09210     .12314
+     .12527     .12165     .14258     .15241     .15996     .14091     .13379
+     .11221     .10195     .14286     .09147     .08140     .05742     .04208
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00985     .01650     .02546     .02009
+     .03829     .05920     .07219     .07510     .10305     .09918     .10945
+     .10355     .07915     .10025     .09738     .07637     .04961     .03760
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00205     .00345     .01288
+     .01710     .01576     .02808     .04229     .04373     .06066     .07788
+     .09181     .09508     .08701     .07365     .07746     .05137     .02302
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00307
+     .00500     .00864     .01345     .02560     .02547     .02880     .02786
+     .04690     .07083     .06270     .06782     .07343     .04277     .02726
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00345     .00576     .01266     .01575     .01741     .03626
+     .02130     .03654     .04273     .03587     .05514     .04603     .03890
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00243     .00334     .00581     .01099     .02185
+     .02251     .02415     .04634     .05543     .04937     .04279     .02922
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00148     .00000     .00595     .00788     .00959
+     .02702     .02456     .02064     .02837     .05699     .04137     .02235
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00148     .00205     .00390     .00755
+     .00801     .01382     .01738     .02352     .04209     .03863     .02873
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00288     .00371
+     .00653     .01413     .00691     .01291     .02956     .04061     .03258
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00038     .00102
+     .00595     .00930     .00690     .02608     .01926     .02936     .02483
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00148     .00000
+     .00371     .00724     .01244     .01048     .01821     .02186     .03073
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00103     .00422     .00217     .01088     .02106     .03239     .02219
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00103     .00000     .00539     .01050     .02812     .01596
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00114     .00038     .00250     .01553     .01524     .02411
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00288     .00744     .01681     .01452
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00653     .01533
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00102     .00526     .01569
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
diff --git a/ZDC/light22620552209s b/ZDC/light22620552209s
new file mode 100644 (file)
index 0000000..108c45d
--- /dev/null
@@ -0,0 +1,360 @@
+     .35245     .37125     .37068     .38120     .37374     .33476     .39077
+     .37152     .41802     .34680     .37302     .37874     .36077     .40112
+     .41413     .43764     .48059     .43047     .49617     .52940     .53979
+     .61851     .57805     .71582     .85765    1.08350    1.63345    2.60493
+     .10681     .13786     .14856     .14333     .13602     .11308     .13061
+     .16108     .11348     .11203     .13687     .12146     .08373     .10368
+     .12111     .14715     .12245     .13187     .11989     .14736     .16841
+     .14078     .12040     .16045     .15388     .21171     .28811     .48352
+     .08755     .07242     .06659     .06231     .05689     .07553     .05975
+     .05644     .06521     .07844     .07749     .07533     .05939     .08731
+     .07582     .06030     .04017     .06710     .06856     .05709     .08620
+     .05079     .06211     .08836     .10277     .13950     .24815     .26912
+     .03906     .06251     .06491     .04493     .06462     .05619     .05214
+     .06105     .05575     .04016     .05465     .05530     .04509     .02434
+     .03415     .03447     .05435     .05505     .04863     .03802     .04222
+     .05891     .08186     .04431     .07049     .10571     .22354     .17152
+     .04318     .03410     .03430     .04136     .03106     .04904     .04943
+     .03932     .02464     .02835     .02815     .03346     .02935     .03707
+     .02996     .02845     .04553     .03040     .03546     .02414     .05520
+     .05158     .06332     .05916     .07741     .07848     .20078     .15060
+     .02393     .03796     .03892     .03981     .03422     .03706     .03536
+     .02149     .03156     .02229     .03757     .02665     .01648     .03010
+     .02589     .03972     .04137     .03346     .02890     .04228     .03872
+     .04092     .04071     .05449     .06702     .08895     .17254     .13885
+     .02615     .03171     .02320     .02579     .03927     .03196     .03717
+     .02028     .03711     .02690     .01582     .02525     .02289     .02023
+     .02444     .01959     .03616     .01983     .02959     .03135     .04751
+     .04153     .04194     .05644     .06698     .08106     .13283     .09650
+     .02449     .02239     .02864     .02744     .03592     .04042     .02560
+     .02955     .01828     .02404     .02384     .00892     .01467     .02254
+     .02655     .02785     .03195     .01888     .03983     .03837     .04804
+     .04908     .04105     .05503     .06611     .08721     .13893     .10472
+     .03117     .03467     .02810     .02871     .04650     .01798     .02921
+     .02014     .02750     .02870     .02700     .03012     .02450     .03357
+     .02089     .01813     .03153     .03120     .03819     .03882     .04220
+     .03928     .05009     .07934     .07010     .10220     .11518     .10704
+     .02253     .03102     .03251     .04143     .02254     .03196     .02795
+     .01839     .02917     .02114     .02985     .02265     .01278     .02536
+     .02915     .03596     .02400     .04108     .03533     .02820     .03821
+     .05640     .02926     .05711     .07745     .12754     .09769     .10072
+     .02484     .02525     .02580     .02478     .03656     .02380     .02776
+     .03887     .00721     .03211     .01378     .03912     .02213     .02965
+     .02453     .03472     .02004     .02686     .03597     .04017     .06560
+     .05540     .07175     .09017     .09024     .14590     .12875     .08415
+     .04178     .01983     .03046     .03260     .01789     .03936     .03151
+     .02344     .02089     .02816     .03074     .03878     .03368     .02323
+     .02328     .04108     .01893     .04857     .05182     .03317     .04789
+     .05533     .06589     .08499     .11986     .17518     .12089     .07666
+     .01708     .02349     .02624     .01569     .03378     .02289     .03783
+     .03145     .03277     .03105     .03694     .03581     .02715     .04180
+     .02791     .05009     .03451     .04391     .05846     .06737     .05751
+     .07926     .10100     .14237     .14390     .13337     .09570     .07095
+     .02464     .03477     .03081     .03242     .05826     .02289     .03165
+     .03933     .02835     .03799     .03061     .04454     .03646     .04870
+     .04689     .05191     .06241     .05958     .09270     .08587     .09411
+     .12485     .18364     .16638     .16248     .14127     .09777     .05575
+     .04778     .02350     .04565     .02840     .06392     .04164     .03762
+     .04234     .05389     .05367     .05963     .06168     .06744     .05150
+     .08167     .07933     .11390     .10167     .11076     .15629     .17992
+     .16885     .17495     .17896     .15006     .14258     .08959     .05060
+     .05522     .05656     .06177     .06512     .06785     .08105     .10473
+     .10406     .10218     .09061     .11820     .12916     .11766     .12565
+     .15902     .18051     .19729     .17824     .19370     .19343     .17237
+     .18227     .15973     .15541     .13467     .09318     .09070     .05578
+     .28020     .30149     .25768     .28270     .22053     .27397     .25986
+     .24352     .24487     .25276     .28596     .23255     .23645     .22882
+     .25861     .27931     .25893     .21614     .23642     .21081     .22089
+     .18358     .17668     .18983     .12011     .11586     .08952     .04668
+     .39941     .36917     .37340     .43800     .35989     .37003     .37157
+     .34219     .37866     .31364     .32026     .29670     .30493     .32828
+     .28700     .21816     .24495     .27840     .22825     .20113     .19937
+     .20817     .16124     .15095     .15728     .12764     .07664     .05489
+     .45329     .42633     .41637     .38872     .41674     .36530     .39679
+     .40801     .39004     .34437     .32434     .31316     .34896     .28373
+     .29218     .29934     .29948     .26090     .21263     .21864     .20469
+     .20443     .16831     .13912     .12637     .14344     .08731     .04602
+     .39180     .39399     .40281     .35664     .33820     .41361     .40507
+     .39163     .39221     .32447     .36897     .34415     .38985     .30250
+     .29416     .27172     .24022     .23958     .25981     .25737     .20080
+     .19152     .15173     .14882     .15022     .13547     .07269     .04322
+     .41390     .36422     .40487     .34521     .41181     .39700     .35920
+     .38138     .38091     .35545     .35149     .29427     .32530     .31793
+     .29646     .28501     .25856     .26180     .25081     .22130     .18545
+     .17868     .14087     .20217     .12955     .10210     .07343     .05424
+     .32744     .36700     .32292     .27312     .36621     .30848     .31024
+     .34340     .38342     .29472     .29456     .30659     .29805     .28741
+     .28551     .28597     .23005     .24183     .21952     .17306     .20162
+     .16554     .13777     .15391     .13713     .09799     .05852     .05226
+     .25137     .29476     .27795     .34563     .31239     .28890     .25725
+     .23178     .28298     .28760     .28339     .26224     .24005     .25379
+     .25292     .24839     .24842     .19187     .24000     .21890     .18447
+     .19050     .17909     .13840     .09724     .10815     .06391     .02752
+     .20663     .22856     .17699     .20227     .21163     .23573     .21717
+     .18624     .21453     .22052     .23362     .20677     .20101     .21018
+     .20818     .22117     .19386     .19470     .20378     .19907     .15302
+     .16949     .14457     .12247     .11442     .10293     .05404     .04405
+     .10416     .08717     .11013     .12269     .11728     .10737     .11258
+     .14682     .14224     .16834     .13422     .16296     .18128     .16108
+     .19824     .18010     .15932     .17086     .17244     .16443     .14030
+     .13729     .16153     .13440     .07765     .09551     .05358     .05405
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .01068     .01973     .02344     .04162     .04934     .05647     .07182
+     .10102     .10397     .10966     .13837     .12750     .10327     .15971
+     .13148     .09913     .10579     .12899     .07826     .05621     .03337
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00155     .00661     .00617     .01578     .01384
+     .03427     .05236     .05654     .04693     .04999     .07797     .10532
+     .11434     .12410     .10938     .07204     .10772     .05273     .02568
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00155     .00311     .00601     .02228
+     .00722     .02076     .03216     .02885     .02974     .04040     .05140
+     .09055     .07913     .06750     .07656     .08170     .04784     .04360
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00231     .00812
+     .00816     .00506     .01093     .02248     .02711     .02997     .02755
+     .03709     .05474     .06156     .05370     .06192     .05607     .04236
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00155     .00000
+     .00215     .00581     .00677     .02093     .02192     .01323     .03240
+     .03777     .04589     .03583     .08682     .06246     .05096     .04362
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00541     .00370     .00466     .00737     .01940     .02650
+     .02174     .02593     .04265     .04246     .04661     .03997     .03591
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00371     .00852     .00913     .01338     .01339
+     .01280     .02188     .01425     .03666     .04894     .05878     .02775
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00060     .00386     .00541     .00180     .00722
+     .00852     .01110     .01709     .02580     .02716     .04397     .02918
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00310     .00832     .01183
+     .00697     .01158     .01113     .02051     .03219     .02892     .03043
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00617     .00627
+     .00617     .01235     .01664     .01169     .02374     .04053     .01459
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00527     .00060     .00696     .01263     .01286     .03536     .01684
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00060
+     .00231     .00542     .00693     .00968     .01168     .02500     .03449
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00231     .00240     .00291     .00874     .00892     .02807     .02084
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00155     .01244     .00968     .02705     .01698
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00447     .00804     .01741     .02167
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00818     .01269     .02636
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00832     .02013
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
diff --git a/ZDC/light22620552210s b/ZDC/light22620552210s
new file mode 100644 (file)
index 0000000..1770485
--- /dev/null
@@ -0,0 +1,360 @@
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00076     .00076     .00152     .00076     .00884     .01782
+     .01982     .03356     .05415     .06146     .07488     .14090     .24389
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00518     .01464     .00304
+     .00532     .01312     .03088     .04635     .02929     .03613     .03863
+     .04169     .07436     .04353     .06567     .08164     .12690     .17049
+     .00000     .00000     .00000     .00000     .00000     .00366     .00228
+     .00580     .00076     .00518     .00152     .00850     .01216     .02141
+     .01740     .03013     .04147     .02473     .02552     .01333     .03877
+     .03498     .05231     .04926     .06098     .05329     .15023     .14011
+     .00000     .00000     .00076     .00000     .00366     .00594     .00656
+     .00518     .00830     .01043     .02294     .01741     .01120     .02005
+     .02467     .03143     .03980     .02572     .02433     .03573     .03379
+     .02917     .02391     .04319     .04706     .05274     .11551     .14069
+     .00000     .00000     .00000     .00442     .00732     .00560     .00926
+     .00960     .02605     .01603     .00851     .02067     .01756     .01735
+     .02357     .01259     .02667     .01507     .01630     .02819     .03940
+     .02931     .03491     .03111     .04211     .06105     .09713     .10375
+     .00076     .00152     .00290     .00290     .00968     .01002     .01292
+     .01658     .00594     .01044     .01873     .00463     .00830     .01659
+     .02508     .02087     .02101     .01693     .03379     .03338     .02745
+     .04007     .02185     .04554     .04015     .05374     .12761     .10929
+     .00656     .00850     .00732     .01196     .01797     .01022     .02433
+     .01334     .01430     .02101     .01950     .01452     .01576     .02939
+     .01120     .01833     .02475     .01486     .03069     .02080     .02766
+     .03168     .04323     .05500     .04652     .07085     .10394     .12535
+     .00732     .01238     .01411     .00926     .00830     .01368     .01721
+     .00636     .01818     .01141     .02033     .02399     .00926     .01700
+     .01852     .03359     .02260     .02376     .02683     .01196     .02895
+     .04342     .01388     .04299     .06623     .06099     .09214     .10026
+     .00754     .00518     .00616     .01002     .01623     .00442     .00870
+     .02198     .00560     .01914     .00290     .01507     .02197     .02571
+     .01949     .02682     .02379     .01577     .02211     .02570     .03358
+     .03791     .05156     .05218     .04092     .07422     .13110     .09318
+     .01216     .01044     .01971     .02025     .00732     .01411     .02648
+     .01230     .01370     .01971     .02259     .01466     .01894     .01500
+     .01680     .03146     .01272     .03111     .03345     .02316     .02274
+     .03879     .02717     .04693     .04597     .11233     .11668     .08584
+     .01313     .01174     .01292     .00830     .02337     .01292     .01639
+     .00539     .02184     .00560     .01970     .02605     .00830     .02302
+     .01467     .02647     .01348     .01867     .03423     .04617     .02524
+     .04731     .04825     .06884     .07063     .11626     .09758     .07350
+     .01196     .01755     .02012     .01176     .02004     .00884     .00947
+     .01466     .00808     .01079     .01327     .02412     .01313     .02046
+     .01368     .01930     .04251     .02738     .04135     .04899     .03686
+     .06568     .05780     .06220     .10610     .12034     .09945     .06048
+     .02508     .01314     .02663     .01389     .02565     .01971     .02356
+     .01466     .01625     .01120     .03615     .02454     .00498     .02274
+     .04046     .03145     .03871     .03954     .05408     .03258     .03829
+     .05626     .06310     .07589     .11827     .14195     .09768     .05237
+     .02697     .01313     .02316     .03109     .03013     .03187     .02357
+     .02468     .03381     .01721     .03828     .03509     .03544     .01852
+     .03208     .04187     .02683     .03313     .04941     .04767     .04399
+     .06843     .07081     .11666     .11055     .10316     .10315     .05713
+     .02607     .01563     .03596     .02510     .02260     .03283     .03843
+     .02993     .01507     .02523     .05799     .02198     .02220     .03588
+     .04658     .04320     .04787     .07108     .05805     .06461     .08962
+     .08397     .13591     .17850     .11004     .11292     .09365     .03986
+     .02835     .02987     .02864     .03588     .03789     .02220     .03479
+     .03588     .04267     .03900     .04749     .05728     .05929     .07693
+     .05193     .05998     .06165     .11264     .09043     .12838     .13491
+     .14644     .12287     .12106     .15900     .13670     .08404     .06053
+     .03431     .06124     .06006     .03990     .07375     .03532     .06253
+     .07319     .05051     .08852     .08656     .09264     .13196     .09836
+     .15430     .15383     .19098     .15248     .15966     .15713     .16548
+     .20723     .16591     .11935     .12972     .14159     .09144     .04441
+     .23833     .24182     .25185     .21498     .20392     .22182     .24606
+     .23113     .21312     .18530     .24201     .22818     .25003     .20096
+     .22080     .23725     .19188     .18912     .23122     .25493     .18371
+     .18171     .14962     .15054     .16155     .14524     .08130     .04641
+     .41067     .36212     .37069     .32843     .39715     .37038     .32953
+     .35440     .37050     .31487     .31403     .25721     .28036     .26952
+     .26304     .25673     .25179     .23919     .26427     .23252     .17495
+     .20183     .14934     .21649     .10922     .09747     .08127     .05031
+     .39266     .45780     .39050     .34439     .43391     .37449     .36636
+     .39319     .46381     .33466     .33074     .30506     .28808     .30802
+     .30981     .28481     .22425     .27601     .25153     .18423     .22101
+     .19414     .14652     .17020     .13505     .10933     .06130     .04961
+     .35821     .40293     .40820     .48483     .43407     .39938     .36248
+     .31873     .36851     .35499     .35205     .36147     .31345     .32139
+     .30042     .29008     .27186     .21606     .27150     .24052     .22021
+     .21144     .18022     .16057     .11091     .10684     .07286     .03729
+     .38965     .41742     .33956     .38568     .38385     .37325     .35363
+     .33141     .32280     .33944     .34940     .31983     .28119     .28515
+     .25537     .26218     .25733     .23379     .26284     .24985     .19869
+     .19712     .16987     .15208     .11842     .12635     .05942     .05551
+     .35644     .32803     .33545     .40513     .33691     .31047     .30764
+     .35257     .35595     .34933     .27419     .30318     .33035     .27272
+     .28805     .27346     .23851     .23507     .23483     .20205     .17668
+     .17774     .19874     .15824     .09867     .10957     .06173     .05645
+     .30436     .31493     .29608     .31315     .29923     .26649     .28602
+     .29737     .32011     .27214     .28935     .26170     .30486     .25107
+     .24795     .23996     .21497     .22915     .23608     .15156     .22423
+     .16831     .13490     .15024     .15297     .09445     .06984     .03182
+     .27563     .16940     .24462     .25261     .20262     .26170     .22144
+     .25640     .25120     .24674     .20879     .25039     .22023     .21804
+     .25707     .21517     .20067     .17961     .16054     .16169     .19048
+     .17026     .17862     .15606     .09636     .13519     .06346     .02859
+     .12416     .10455     .08461     .11627     .15183     .17186     .14472
+     .13898     .17559     .18592     .16095     .17983     .21483     .18078
+     .18550     .20462     .15497     .14419     .15309     .16365     .13878
+     .17245     .12702     .10397     .12068     .10554     .05520     .06042
+     .00000     .00000     .00000     .00000     .00000     .00388     .01065
+     .02479     .03328     .03132     .03919     .05079     .08108     .09347
+     .10625     .11576     .13742     .14158     .12242     .15734     .10661
+     .13697     .11254     .10287     .09182     .07935     .06325     .05205
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00754     .01023     .02259     .01219     .04777     .03553
+     .03338     .05486     .04826     .07989     .07988     .09941     .11678
+     .11776     .11477     .08873     .13417     .08693     .05743     .04566
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .01044     .00000     .01044     .01530
+     .01259     .05028     .02757     .03575     .03740     .04579     .07051
+     .09725     .10429     .09576     .10345     .06721     .04520     .04220
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00270     .00657     .00907
+     .01508     .01274     .01489     .02379     .03911     .03340     .04503
+     .05354     .04781     .06612     .08387     .06970     .07464     .02534
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00076     .00152
+     .00907     .01390     .01929     .02163     .03345     .02589     .03556
+     .02455     .02861     .04694     .08152     .05452     .04461     .03812
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00290
+     .00540     .00733     .00656     .00949     .02011     .02532     .02551
+     .01433     .02193     .02449     .04333     .06730     .03705     .03163
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00290     .00076     .00926     .00948     .00810     .02185     .02181
+     .01141     .03103     .02904     .03040     .04545     .04877     .01369
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00194     .00000     .00560     .00346     .00678     .00830     .00595
+     .01005     .00809     .00851     .02283     .03282     .05052     .01943
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00194     .00000     .01218     .00831     .01412
+     .01917     .01413     .01918     .03035     .02588     .03527     .04294
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00194     .00774     .00194     .00927
+     .01140     .01445     .01822     .01544     .02165     .03715     .02285
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00290     .00540
+     .00755     .00969     .02454     .01758     .02705     .03939     .02482
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00484     .00560     .00518     .02166     .01763     .02924     .03136
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00270     .00422     .00851     .00832     .01897     .03140     .03581
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00194     .00194     .00561     .00950     .02050     .02551     .03849
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00270     .00271     .01144     .02115     .04105
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00076     .00464     .01314     .02975
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00682     .01777
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
+     .00000     .00000     .00000     .00000     .00000     .00000     .00000
diff --git a/ZDC/testGenFermi.C b/ZDC/testGenFermi.C
new file mode 100644 (file)
index 0000000..9fe6a25
--- /dev/null
@@ -0,0 +1,145 @@
+void testGenFermi()
+{
+gROOT.Reset();
+//
+// ************* Parameters for AliGenHIJING generator **************
+//
+AliGenZDC *gener = new AliGenZDC();
+gener->SetParticle(kNeutron);
+gener->SetMomentum(2760.);
+gener->SetDir(0,0,0,1);
+gener->SetFermi(1);
+gener->SetDiv(0,0,0);
+gener->Init();
+//
+// ************* Creating canvas, pads & histograms **************
+//
+//TCanvas *c1 = new TCanvas("c1","Nucleon Momentum in LAB RS",0,10,580,700);
+//pad11 = new TPad("pad11"," ",0.01,0.51,0.49,0.99);
+//pad12 = new TPad("pad12"," ",0.51,0.51,0.99,0.99);
+//pad13 = new TPad("pad13"," ",0.01,0.01,0.99,0.49);
+//pad11->SetFillColor(18);
+//pad12->SetFillColor(18);
+//pad13->SetFillColor(18);
+//pad11->Draw();
+//pad12->Draw();
+//pad13->Draw();
+
+TCanvas *c2 = new TCanvas("c2","Nucleon Momentum Boosted with Fermi Momentum",600,10,600,700);
+c2->SetFillColor(38);
+pad21 = new TPad("pad21"," ",0.01,0.51,0.49,0.99);
+pad22 = new TPad("pad22"," ",0.51,0.51,0.99,0.99);
+pad23 = new TPad("pad23"," ",0.01,0.01,0.99,0.49);
+pad21->SetFillColor(10);
+pad22->SetFillColor(10);
+pad23->SetFillColor(10);
+pad21->Draw();
+pad22->Draw();
+pad23->Draw();
+
+TCanvas *c3 = new TCanvas("c3","Fermi2Gaussian distributions",0,10,580,700);
+c3->SetFillColor(38);
+pad31 = new TPad("pad31"," ",0.01,0.51,0.99,0.99);
+pad32 = new TPad("pad32"," ",0.01,0.01,0.99,0.49);
+pad31->SetFillColor(10);
+pad32->SetFillColor(10);
+pad31->Draw();
+pad32->Draw();
+
+//TH1F *hpx  = new TH1F("hpx","Nucleon momentum Px",100,-100.,100.);
+//TH1F *hpy  = new TH1F("hpy","Nucleon momentum Py",100,-100.,100.);
+//TH1F *hpz  = new TH1F("hpz","Nucleon momentum Pz",100,-3000.,0.);
+
+TH1F *hpbx = new TH1F("hpbx","Px boosted with Fermi momentum",100,-1.,1.);
+TH1F *hpby = new TH1F("hpby","Py boosted with Fermi momentum",100,-1.,1.);
+TH1F *hpbz = new TH1F("hpbz","Pz boosted with Fermi momentum",100,-8000.,0.);
+
+TH1D *hdgp  = new TH1D("hdgp","Fermi Two Gaussian Distribution -> p",200,0.,200.);
+TH1D *hdgn  = new TH1D("hdgn","Fermi Two Gaussian Distribution -> n",200,0.,200.);
+//
+// ************* Fermi Two Gaussian distributions **************
+//
+Double_t FermiDp[201], FermiDn[201];
+for(Int_t i=0; i<=200; i++){
+   FermiDp[i] = gener->GetFermi2p(i);
+   FermiDn[i] = gener->GetFermi2n(i);
+//     printf("        testGenZDC -> Fermi2p[%d] = %f, Fermi2n[%d] = %f\n",i,FermiDp[i],i,FermiDn[i]);
+   hdgp->Fill((Axis_t)i,(Stat_t)FermiDp[i]);
+   hdgn->Fill((Axis_t)i,(Stat_t)FermiDn[i]);
+}
+   
+pad31->cd();
+//pad31->GetFrame()->SetFillColor(10);
+//pad31->GetFrame()->SetBorderMode(-1);
+//pad31->GetFrame()->SetBorderSize(12);
+hdgp->Draw();
+
+pad32->cd();
+//pad32->GetFrame()->SetFillColor(10);
+//pad32->GetFrame()->SetBorderMode(-1);
+//pad32->GetFrame()->SetBorderSize(12);
+hdgn->Draw();
+//
+// ************* Generation of events **************
+//
+for(Int_t i=0; i<=10000; i++){
+   gener->Generate();
+  //
+   // ************* Getting momenta **************
+   //
+//   Double_t px = gener->GetMomentum(0);
+//   Double_t py = gener->GetMomentum(1);
+//   Double_t pz = gener->GetMomentum(2);
+   Double_t pboostx = gener->GetBoostMomentum(0);
+   Double_t pboosty = gener->GetBoostMomentum(1);
+   Double_t pboostz = gener->GetBoostMomentum(2);
+//   printf (" testGenZDC -> pz = %f pz_boost = %f\n",pz,pboostz);
+   //
+   // ************* Filling histograms **************
+   //
+//   hpx->Fill(px);
+//   hpy->Fill(py);
+//   hpz->Fill(pz);
+   hpbx->Fill(pboostx);
+   hpby->Fill(pboosty);
+   hpbz->Fill(pboostz);
+   //
+   // ************* Drawing histograms **************
+   //
+//   pad11->cd();
+//   pad11->GetFrame()->SetFillColor(10);
+//   pad11->GetFrame()->SetBorderMode(-1);
+//   pad11->GetFrame()->SetBorderSize(12);
+//   hpx->Draw();
+
+//   pad12->cd();
+//   pad12->GetFrame()->SetFillColor(10);
+//   pad12->GetFrame()->SetBorderMode(-1);
+//   pad12->GetFrame()->SetBorderSize(12);
+//   hpy->Draw();
+   
+//   pad13->cd();
+//   pad13->GetFrame()->SetFillColor(10);
+//   pad13->GetFrame()->SetBorderMode(-1);
+//   pad13->GetFrame()->SetBorderSize(12);
+//   hpz->Draw();
+   
+   pad21->cd();
+//   pad21->GetFrame()->SetFillColor(10);
+//   pad21->GetFrame()->SetBorderMode(-1);
+//   pad21->GetFrame()->SetBorderSize(12);
+   hpbx->Draw();
+   
+   pad22->cd();
+//   pad22->GetFrame()->SetFillColor(10);
+//   pad22->GetFrame()->SetBorderMode(-1);
+//   pad22->GetFrame()->SetBorderSize(12);
+   hpby->Draw();
+   
+   pad23->cd();
+//   pad23->GetFrame()->SetFillColor(10);
+//   pad23->GetFrame()->SetBorderMode(-1);
+//   pad23->GetFrame()->SetBorderSize(12);
+   hpbz->Draw();
+}  
+}
diff --git a/ZDC/zdc_common.inc b/ZDC/zdc_common.inc
deleted file mode 100644 (file)
index c7e9c22..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-*
-* Variables for beam divergency and crossing angle (important for ZDC !)
-*
-      COMMON/BMDIV/BMDIV,BMCRA,IFLCR
-      REAL BMDIV,BMCRA
-      INTEGER IFLCR
-*
-*
-* Variables relative to size (and offset) of the beam
-*
-      COMMON /BMTYPE/ BEAMTY,EPERN
-      INTEGER BEAMTY
-      COMMON /INBEAM/ FX,FY,SIGX,SIGY
-*
-*
-* Flags and arrays for the generation of Fermi momentum of the spectators
-*
-      COMMON/CFERMI/IFERMI,
-     +            PROBINTP(0:200),PROBINTN(0:200),PP(0:200),DDP(3)
-*
-*
-* Geometrical quantities relative to ZDC
-*
-      COMMON /ZDC_CGEOM/
-     + HDZN(3), HDZP(3), FIZN(3), FIZP(3), GRZN(3), GRZP(3),
-     + NCEN(3), NCEP(3), ZNPOS(3), ZPPOS(3)
-*
-*
-* Steering flags and variables for HIJING/VENUS
-*
-      COMMON/EVGN/IHIJ,IHIJF,IHIJSP,IVNU,IVNUF,IVNSP
-      COMMON/EVVAR/BIMP,PARTI
-*
-*
-* Files for input/output
-*
-      CHARACTER*60 FILEA,FILEV,FILEH
-      COMMON/FIL/FILEA,FILEV,FILEH
-      INTEGER FILEI(15),FILEJ(15),FILEK(15)
-      EQUIVALENCE(FILEA,FILEI(1))
-      EQUIVALENCE(FILEV,FILEJ(1))
-      EQUIVALENCE(FILEH,FILEK(1))
-*
-*
-* Variables for hit storage
-*
-* Set ZDC
-*
-      PARAMETER(NVZN=2)
-      PARAMETER(NVZP=2)
-      COMMON /ZDC_HITS/ ZSET,ZN1,ZP1,CHNMSZN(NVZN),CHNMSZP(NVZP),
-     +                  NBITSZN(NVZN),NBITSZP(NVZP),IDTYPZN,IDTYPZP,
-     +                  NWHI,NWDI,ITOLD
-      CHARACTER*4 ZSET,ZN1,ZP1
-      CHARACTER*4 CHNMSZN,CHNMSZP
-      INTEGER NBITSZN,NBITSZP
-      INTEGER IDTYPZN,IDTYPZP
-*
-* Detectors ZN1,ZP1
-*
-      PARAMETER(NHZ=7)
-      PARAMETER(NZPTX=2,NZPTY=2,NZNTX=2,NZNTY=2)
-      COMMON /ZDC_DET/ CHNAMH(NHZ),NBITSH(NHZ),ORIG(NHZ),FACT(NHZ),
-     +                 HITS(NHZ),HITSBUPP(NHZ),HITSBUPN(NHZ),
-     +                 NHSUM
-      CHARACTER*4 CHNAMH
-      INTEGER NBITSH
-      REAL ORIG,FACT
-      REAL HITS
-      REAL HITSBUPP,HITSBUPN
-      INTEGER NHSUM
-*
-* Variables for CWN
-*
-      COMMON/ZNTVAR/NPA,ENE,SFL,
-     +XZP,YZP,
-     +EZP(NZPTX,NZPTY),NPP(NZPTX,NZPTY),
-     +XZN,YZN,
-     +EZN(NZNTX,NZNTY),NPN(NZNTX,NZNTY)
-*
-      INTEGER NPA,NPP,NPN,SFL
-      REAL ENE,XZP,YZP,EZP,XZN,YZN,EZN
-*
-*
-* Flag for showering of primary particles
-*
-      COMMON/SECFL/ISECF
-*
-*
-* Arrays for Cerenkov photons
-*
-      PARAMETER (NBETA=4, NALFA=90, NBE=18)
-      COMMON /TABL/ TABLE(NBETA,NALFA,NBE)
-*