]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - ZDC/AliZDC.cxx
Rewriting and cleaning up
[u/mrichter/AliRoot.git] / ZDC / AliZDC.cxx
index 8fc5afdcf81283fe85452fe1f9abff461434cd2d..ba0d62cc3cd39bfa27721555538d99a3762166d7 100644 (file)
 
 /*
 $Log$
+Revision 1.22  2001/05/14 09:53:32  coppedis
+Adding functions ZMin and ZMax
+
+Revision 1.21  2001/04/20 10:05:02  coppedis
+Minor changes
+
+Revision 1.20  2001/03/26 13:39:20  coppedis
+Comment prints
+
+Revision 1.19  2001/03/26 09:10:23  coppedis
+Corrected bug in constructor (fIshunt has to be =1)
+
 Revision 1.18  2001/03/20 08:21:55  coppedis
 ZDC needs PIPE, ABSO, DIPO and SHIL
 
@@ -93,9 +105,9 @@ AliZDC::AliZDC()
 
   fNhits = 0;
 
-  fNStHits = 0;
+//  fNStHits = 0;
 
-  fNPrimaryHits = 0;
+//  fNPrimaryHits = 0;
   fNoShower   = 0;
 }
  
@@ -107,17 +119,6 @@ AliZDC::AliZDC(const char *name, const char *title)
   // Standard constructor for the Zero Degree Calorimeter base class
   //
 
-  // Check that DIPO is there (otherwise tracking is wrong!!!)
-  
-  AliModule* PIPE=gAlice->GetModule("PIPE");
-  AliModule* ABSO=gAlice->GetModule("ABSO");
-  AliModule* DIPO=gAlice->GetModule("DIPO");
-  AliModule* SHIL=gAlice->GetModule("SHIL");
-  if((!PIPE) || (!ABSO) || (!DIPO) || (!SHIL)) {
-    Error("Constructor","ZDC needs PIPE, ABSO, DIPO and SHIL!!!\n");
-    exit(1);
-  } 
-
   //
   // Allocate the array of hits
   
@@ -126,10 +127,10 @@ AliZDC::AliZDC(const char *name, const char *title)
   fHits   = new TClonesArray("AliZDCHit",1000);
   gAlice->AddHitList(fHits);
   
-  fStHits = new TClonesArray("AliZDCHit",1000);
-  fNStHits = 0;
+//  fStHits = new TClonesArray("AliZDCHit",1000);
+//  fNStHits = 0;
 
-  fNPrimaryHits = 0;
+//  fNPrimaryHits = 0;
   fNoShower   = 0;
 
 }
@@ -163,73 +164,89 @@ void AliZDC::AddHit(Int_t track, Int_t *vol, Float_t *hits)
   
   static Float_t primKinEn, xImpact, yImpact, sFlag;
 
-  AliZDCHit *newquad, *curevquad, *curprimquad;
+  AliZDCHit *newquad, *curprimquad;
+//  AliZDCHit *curevquad;  
   newquad = new AliZDCHit(fIshunt, track, vol, hits);
 
-  TClonesArray &lsthits = *fStHits;
+//  TClonesArray &lsthits = *fStHits;
   TClonesArray &lhits = *fHits;
-   
-  Int_t i,j,kStHit = 1;
-  for(i=0; i<fNStHits; i++){
-    // If hits are equal (same track, same volume), sum them.
-     curevquad = (AliZDCHit*) lsthits[i];
-     kStHit = 1;
-     if(*curevquad == *newquad){
-        *curevquad = *curevquad+*newquad;
-        kStHit = 0;
-     } 
-  }
-
-  for(j=0; j<fNhits; j++){
-    // If hits are equal (same track, same volume), sum them.
-     curprimquad = (AliZDCHit*) lhits[j];
-     if(*curprimquad == *newquad){
-        *curprimquad = *curprimquad+*newquad;
-       delete newquad;
-       return;
-     } 
-  }
   
   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
+        newquad->fSFlag = 1;  // SECONDARY particle entering the ZDC
       }
       else if(track == primary){
-        newquad->fSFlag = 0;  // Hit created by PRIMARY particle entering the ZDC
+        newquad->fSFlag = 0;  // PRIMARY particle entering the ZDC
       }  
-      fNPrimaryHits += 1;
-      sFlag = newquad->fSFlag;
+//      fNPrimaryHits += 1;
+      sFlag    = newquad->fSFlag;
       primKinEn = newquad->fPrimKinEn;
-      xImpact = newquad->fXImpact;
-      yImpact = newquad->fYImpact;
+      xImpact  = newquad->fXImpact;
+      yImpact  = newquad->fYImpact;
    }
    else{       
       newquad->fPrimKinEn = primKinEn;
-      newquad->fXImpact = xImpact;
+      newquad->fXImpact        = xImpact;
       newquad->fYImpact = yImpact;
-      newquad->fSFlag = sFlag;
+      newquad->fSFlag  = sFlag;
    }
+  Int_t j;
+//  Int_t i,kStHit = 1;
+//  for(i=0; i<fNStHits; i++){
+//    // If hits are equal (same track, same volume), sum them.
+//     curevquad = (AliZDCHit*) lsthits[i];
+//     kStHit = 1;
+//     if(*curevquad == *newquad){
+//     *curevquad = *curevquad+*newquad;
+//     kStHit = 0;
+//     } 
+//     if(kStHit == 0) break;
+//  }
+
+  for(j=0; j<fNhits; j++){
+    // If hits are equal (same track, same volume), sum them.
+     curprimquad = (AliZDCHit*) lhits[j];
+     if(*curprimquad == *newquad){
+        *curprimquad = *curprimquad+*newquad;
+       delete newquad;
+       return;
+     } 
+  }
 
     //Otherwise create a new hit
     new(lhits[fNhits]) AliZDCHit(newquad);
     fNhits++;
     
-    if(kStHit){
-      new(lsthits[fNStHits]) AliZDCHit(newquad);
-      fNStHits++;
-    }
-//    if(fDebug == 1){ 
+//    if(kStHit){
+//      new(lsthits[fNStHits]) AliZDCHit(newquad);
+//      fNStHits++;
+//    }
+
+    if(fDebug == 1){ 
       printf("\n  Primary Hits --------------------------------------------------------\n");
       fHits->Print("");
-      printf("\n  Event Hits --------------------------------------------------------\n");
-      fStHits->Print("");
-//    }
+//      printf("\n  Event Hits --------------------------------------------------------\n");
+//      fStHits->Print("");
+    }
 
     delete newquad;
   }
+//____________________________________________________________________________
+Float_t AliZDC::ZMin(void) const
+{
+  // Minimum dimension of the ZDC module in z
+  return 11600.;
+}
+
+//____________________________________________________________________________
+Float_t AliZDC::ZMax(void) const
+{
+  // Maximum dimension of the ZDC module in z
+  return  11750.;
+}
   
 //_____________________________________________________________________________
 void AliZDC::ResetDigits()