]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
PDG code of incoming particles stored in ZDC hits
authorcoppedis <coppedis@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 22 May 2008 07:35:25 +0000 (07:35 +0000)
committercoppedis <coppedis@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 22 May 2008 07:35:25 +0000 (07:35 +0000)
ZDC/AliZDC.cxx
ZDC/AliZDCHit.cxx
ZDC/AliZDCHit.h
ZDC/AliZDCv3.cxx

index ad327c18245073d871cfc242d66f16bedaafda9b..5908f68ffb4cfb877eaea80866e9210d04757a52 100644 (file)
@@ -156,7 +156,8 @@ void AliZDC::AddHit(Int_t track, Int_t *vol, Float_t *hits)
   //     obtain digits at the end of each event
   //
   
-  static Float_t primKinEn, xImpact, yImpact, sFlag;
+  static Float_t primKinEn=0., xImpact=0., yImpact=0., sFlag=0.;
+  static Int_t   pcPDGcode;
 
   AliZDCHit *newquad, *curprimquad;
   newquad = new AliZDCHit(fIshunt, track, vol, hits);
@@ -165,6 +166,7 @@ void AliZDC::AddHit(Int_t track, Int_t *vol, Float_t *hits)
   if(fNhits==0){
       // First hit -> setting flag for primary or secondary particle
       Int_t primary = gAlice->GetMCApp()->GetPrimary(track);     
+      //
       if(track != primary){
         newquad->SetSFlag(1);  // SECONDARY particle entering the ZDC
       }
@@ -175,12 +177,14 @@ void AliZDC::AddHit(Int_t track, Int_t *vol, Float_t *hits)
       primKinEn = newquad->GetPrimKinEn();
       xImpact  = newquad->GetXImpact();
       yImpact  = newquad->GetYImpact();
+      pcPDGcode        = newquad->GetPDGCode();
    }
    else{       
       newquad->SetPrimKinEn(primKinEn);
       newquad->SetXImpact(xImpact);
       newquad->SetYImpact(yImpact);
       newquad->SetSFlag(sFlag);
+      newquad->SetPDGCode(pcPDGcode);
    }
  
   Int_t j;
index c9eb05a8b2fee1ccd7e7e4fc0820bb54809be800..4e0ae1ac2cf0b5a899ff5e27f328ac66d3ac523d 100644 (file)
@@ -34,7 +34,8 @@ AliZDCHit::AliZDCHit() :
   fSFlag(0),
   fLightPMQ(0.),
   fLightPMC(0.),
-  fEnergy(0.) 
+  fEnergy(0.), 
+  fPDGCode(0)
 
 {
   //
@@ -52,7 +53,8 @@ AliZDCHit::AliZDCHit(Int_t shunt, Int_t track, Int_t *vol, Float_t *hits) :
   fSFlag(hits[6]),
   fLightPMQ(hits[7]),
   fLightPMC(hits[8]),
-  fEnergy(hits[9]) 
+  fEnergy(hits[9]), 
+  fPDGCode(hits[10])
 
 {
   //
@@ -74,7 +76,8 @@ AliZDCHit::AliZDCHit(const AliZDCHit &oldhit) :
   fSFlag(oldhit.GetSFlag()),
   fLightPMQ(oldhit.GetLightPMQ()), 
   fLightPMC(oldhit.GetLightPMC()),
-  fEnergy(oldhit.GetEnergy())
+  fEnergy(oldhit.GetEnergy()),
+  fPDGCode(oldhit.GetPDGCode())
 {
   // Copy constructor
   fX = oldhit.X();
@@ -88,9 +91,9 @@ AliZDCHit::AliZDCHit(const AliZDCHit &oldhit) :
 void AliZDCHit::Print(Option_t *) const 
 {
    // Print method
-   printf(" -> HIT: vol[0] =  %d vol[1] =  %d Track: %d \n" 
-         "  Primary E = %f, Ximpact = %f, Yimpact = %f, SFlag = %f\n"
-          "  PMQLight = %f, PMCLight = %f,  Deposited E = %f\n ", 
-          fVolume[0],fVolume[1],fTrack,fPrimKinEn,fXImpact,fYImpact,
+   printf("\t ZDC HIT: det =  %d tow =  %d track %d pcPDGcode %d\n" 
+         "\t  Primary E = %f, Ximpact = %f, Yimpact = %f, SFlag = %f\n"
+          "\t  PMQLight = %f, PMCLight = %f,  Deposited E = %f\n ", 
+          fVolume[0],fVolume[1],fTrack,fPDGCode,fPrimKinEn,fXImpact,fYImpact,
           fSFlag,fLightPMQ,fLightPMC,fEnergy);
 }
index 4964f54fbbbff6c84fc42966d777810be1c56d62..44228e1c233892e4469c9ac9b01a6900ba211eef 100644 (file)
@@ -20,6 +20,7 @@ public:
 
   // Getters 
   virtual Int_t   GetVolume(Int_t i) const {return fVolume[i];}
+  virtual Int_t   GetPDGCode() const      {return fPDGCode;}
   virtual Float_t GetPrimKinEn() const     {return fPrimKinEn;}
   virtual Float_t GetXImpact() const       {return fXImpact;}
   virtual Float_t GetYImpact() const       {return fYImpact;}
@@ -29,6 +30,8 @@ public:
   virtual Float_t GetEnergy() const        {return fEnergy;}
 
   // Setters 
+  virtual void SetVolume(Int_t i, Float_t val) {fVolume[i]=val;} 
+  virtual void SetPDGCode(Int_t code)     {fPDGCode=code;}
   virtual void SetLightPMQ(Float_t value) {fLightPMQ=value;}
   virtual void SetLightPMC(Float_t value) {fLightPMC=value;}
   virtual void SetSFlag(Float_t value)    {fSFlag=value;}
@@ -64,9 +67,10 @@ protected:
   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
+  Int_t      fPDGCode;     //PDG code of particle in the ZDC
  
 
-  ClassDef(AliZDCHit,1)  // Hits for the Zero Degree Calorimeters
+  ClassDef(AliZDCHit,2)  // Hits for the Zero Degree Calorimeters
 };
  
 #endif
index aacc1ef107ae969a5b5de4988efb89359ab33b49..aaca85f05cc3943b3d55c17f48d800ecb3c110da 100644 (file)
@@ -33,6 +33,7 @@
 #include <TTree.h>
 #include <TVirtualMC.h>
 #include <TGeoManager.h>
+#include <TParticle.h>
 
 // --- AliRoot classes
 #include "AliConst.h"
@@ -2242,19 +2243,16 @@ void AliZDCv3::StepManager()
   //
   // Routine called at every step in the Zero Degree Calorimeters
   //
-  Int_t j, vol[2], ibeta=0, ialfa, ibe, nphe;
-  Float_t x[3], xdet[3], destep, hits[10], m, ekin, um[3], ud[3], be, out;
-  //Float_t radius;
-  Float_t xalic[3], z, guiEff;
+  Int_t   j, vol[2]={0,0}, ibeta=0, ialfa=0, ibe=0, nphe=0;
+  Float_t hits[11], x[3], xdet[3], um[3], ud[3];
+  Float_t m=0., ekin=0., destep=0., be=0., out=0.;
   // Parametrization for light guide uniformity
-  // -> OBSOLETE!!!! For guide tilted @ 46 degrees
-  //Float_t guiPar[4]={0.31,-0.0004,0.0197,0.7958};
   // NEW!!! Light guide tilted @ 51 degrees
   Float_t guiPar[4]={0.31,-0.0006305,0.01337,0.8895};
   Double_t s[3], p[3];
   const char *knamed;
   //
-  for (j=0;j<10;j++) hits[j]=-999.;
+  for(j=0;j<11;j++) hits[j]=-999.;
   //
   // --- This part is for no shower developement in beam pipe and TDI
   // If particle interacts with beam pipe or TDI -> return
@@ -2438,8 +2436,13 @@ void AliZDCv3::StepManager()
         hits[7] = 0;
         hits[8] = 0;
         hits[9] = 0;
+       //
+       Int_t curTrackN = gAlice->GetMCApp()->GetCurrentTrackNumber();
+        TParticle *part = (gAlice->GetMCApp())->Particle(curTrackN);
+       hits[10] = part->GetPdgCode();
+       //printf("\t PDGCode = %d\n", part->GetPdgCode());
 
-       AddHit(gAlice->GetMCApp()->GetCurrentTrackNumber(), vol, hits);
+       AddHit(curTrackN, vol, hits);
        
        if(fNoShower==1){
          //printf("\t VolName %s -> det %d quad %d - x = %f, y = %f, z = %f\n", 
@@ -2583,15 +2586,16 @@ void AliZDCv3::StepManager()
          if(ibe>fNbep) ibe=fNbep;
          out =  charge*charge*fTablep[ibeta][ialfa][ibe];
         gMC->TrackPosition(s[0],s[1],s[2]);
-         for(j=0; j<=2; j++){
+        Float_t xalic[3];
+         for(j=0; j<3; j++){
             xalic[j] = s[j];
          }
         // z-coordinate from ZEM front face 
         // NB-> fPosZEM[2]+fZEMLength = -1000.+2*10.3 = 979.69 cm
-        z = -xalic[2]+fPosZEM[2]+2*fZEMLength-xalic[1];
+        Float_t z = -xalic[2]+fPosZEM[2]+2*fZEMLength-xalic[1];
 //      z = xalic[2]-fPosZEM[2]-fZEMLength-xalic[1]*(TMath::Tan(45.*kDegrad));
 //         printf("\n  fPosZEM[2]+2*fZEMLength = %f", fPosZEM[2]+2*fZEMLength);
-        guiEff = guiPar[0]*(guiPar[1]*z*z+guiPar[2]*z+guiPar[3]);
+        Float_t guiEff = guiPar[0]*(guiPar[1]*z*z+guiPar[2]*z+guiPar[3]);
         out = out*guiEff;
         nphe = gRandom->Poisson(out);
 //         printf("    out*guiEff = %f nphe = %d", out, nphe);