]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PHOS/AliPHOSvImpacts.cxx
Removing warnings (Sun)
[u/mrichter/AliRoot.git] / PHOS / AliPHOSvImpacts.cxx
index 8d888eda690638ac94e741c7936796a458b83344..805364b2230e70807c5a88a905048f4c3b2c0372 100644 (file)
@@ -13,6 +13,7 @@
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
+
 /* $Id$ */
 
 //_________________________________________________________________________
 
 // --- ROOT system ---
 
-#include "TTree.h"
+//#include <TTree.h>
+#include <TVirtualMC.h>
 
 // --- Standard library ---
 
 // --- AliRoot header files ---
 
-#include "AliRun.h"
-#include "AliMC.h"
-#include "AliPHOSvImpacts.h"
 #include "AliPHOSGeometry.h"
 #include "AliPHOSImpact.h"
+#include "AliPHOSvImpacts.h"
+#include "AliRun.h"
+#include "AliMC.h"
 
 ClassImp(AliPHOSvImpacts)
 
 //____________________________________________________________________________
-AliPHOSvImpacts::AliPHOSvImpacts()
+AliPHOSvImpacts::AliPHOSvImpacts():AliPHOSv1()
 {
   // ctor
+  fEMCImpacts  = 0 ;
+  fPPSDImpacts = 0 ;
+  fCPVImpacts  = 0 ; 
 }
 
 //____________________________________________________________________________
@@ -53,9 +58,6 @@ AliPHOSvImpacts::AliPHOSvImpacts(const char *name, const char *title):
 AliPHOSv1(name,title) 
 {
   // ctor : title is used to identify the layout
-  //        GPS2 = 5 modules (EMC + PPSD)
-  //        IHEP = 5 modules (EMC + CPV )
-  //        MIXT = 4 modules (EMC + CPV ) and 1 module (EMC + PPSD)
   //
   // We store hits :
   //   - fHits (the "normal" one), which retains the hits associated with
@@ -64,34 +66,27 @@ AliPHOSv1(name,title)
   //     This part inherits from AliPHOSv1
   //
   // We store impacts :
-  //  - fEMCImpacts, fCPVImpacts, fPPSDImpacts which are
-  //    TList of EMC, CPV and PPSD modules respectively, each
+  //  - fEMCImpacts, fCPVImpacts which are
+  //    TList of EMC and CPV modules respectively, each
   //    modules contains TClonesArray of AliPHOSImpacts
   
   fEMCImpacts  = new TList();
   fCPVImpacts  = new TList();
-  fPPSDImpacts = new TList();
 
   Int_t nPHOSModules = GetGeometry()->GetNModules();
-  Int_t nCPVModules  = GetGeometry()->GetNCPVModules();
-  Int_t nPPSDModules = GetGeometry()->GetNPPSDModules();
+  Int_t nCPVModules  = GetGeometry()->GetNModules();
 
   Int_t iPHOSModule;
   TClonesArray * impacts;
   for (iPHOSModule=0; iPHOSModule<nPHOSModules; iPHOSModule++) {
     fEMCImpacts->Add(new TClonesArray("AliPHOSImpact",200)) ;
     fNEMCImpacts[iPHOSModule] = 0;
-    impacts = (TClonesArray *)fEMCImpacts->At(iPHOSModule);
+    impacts = dynamic_cast<TClonesArray *>(fEMCImpacts->At(iPHOSModule));
   }
   for (iPHOSModule=0; iPHOSModule<nCPVModules; iPHOSModule++) {
     fCPVImpacts->Add(new TClonesArray("AliPHOSImpact",200)) ;
     fNCPVImpacts[iPHOSModule] = 0;
-    impacts = (TClonesArray *)fCPVImpacts->At(iPHOSModule);
-  }
-  for (iPHOSModule=0; iPHOSModule<nPPSDModules; iPHOSModule++) {
-    fPPSDImpacts->Add(new TClonesArray("AliPHOSImpact",200)) ;
-    fNPPSDImpacts[iPHOSModule] = 0;
-    impacts = (TClonesArray *)fPPSDImpacts->At(iPHOSModule);
+    impacts = dynamic_cast<TClonesArray *>(fCPVImpacts->At(iPHOSModule));
   }
 
 }
@@ -108,7 +103,7 @@ AliPHOSvImpacts::~AliPHOSvImpacts()
     fHits = 0 ; 
   }
 
-  // Delete impacts in EMC, CPV and PPSD
+  // Delete impacts in EMC, CPV
   if ( fEMCImpacts ) {
     fEMCImpacts->Delete() ; 
     delete fEMCImpacts ;
@@ -119,15 +114,18 @@ AliPHOSvImpacts::~AliPHOSvImpacts()
     delete fCPVImpacts ;
     fCPVImpacts = 0 ; 
   }
-  if ( fPPSDImpacts ) {
-    fPPSDImpacts->Delete() ; 
-    delete fPPSDImpacts ;
-    fPPSDImpacts = 0 ; 
-  }
 }
 
 //____________________________________________________________________________
-void AliPHOSvImpacts::AddImpact( char* det, Int_t shunt, Int_t primary, Int_t track, Int_t module,
+void AliPHOSvImpacts::Copy(AliPHOSvImpacts & phos) 
+{
+  TObject::Copy(phos) ; 
+  AliPHOS::Copy(phos) ; 
+}
+
+
+//____________________________________________________________________________
+void AliPHOSvImpacts::AddImpact(const char* det, Int_t shunt, Int_t primary, Int_t track, Int_t module,
                           Int_t pid, TLorentzVector p, Float_t *xyz)
 {
   // Add an impact to the impact list.
@@ -136,42 +134,36 @@ void AliPHOSvImpacts::AddImpact( char* det, Int_t shunt, Int_t primary, Int_t tr
   Int_t         nImpacts = 0;
 
   if (strcmp(det,"EMC ")==0) {
-    impacts = (TClonesArray *)fEMCImpacts->At(module);
+    impacts = dynamic_cast<TClonesArray *>(fEMCImpacts->At(module));
     nImpacts= fNEMCImpacts[module];
     fNEMCImpacts[module]++ ;
   }
   else if (strcmp(det,"CPV ")==0) {
-    impacts = (TClonesArray *)fCPVImpacts->At(module);
+    impacts = dynamic_cast<TClonesArray *>(fCPVImpacts->At(module));
     nImpacts= fNCPVImpacts[module];
     fNCPVImpacts[module]++ ;
   }
-  else if (strcmp(det,"PPSD")==0) {
-    impacts = (TClonesArray *)fPPSDImpacts->At(module);
-    nImpacts= fNPPSDImpacts[module];
-    fNPPSDImpacts[module]++ ;
-  }
 
   new((*impacts)[nImpacts]) AliPHOSImpact(shunt,primary,track,pid,p,xyz) ;
 
   if (fDebug==1) {
     printf("Module %d %s: ",module,det);
-    ((AliPHOSImpact*)(impacts->At(nImpacts)))->Print();
+    (dynamic_cast<AliPHOSImpact*>((impacts->At(nImpacts))))->Print();
   }
 }
 
 //____________________________________________________________________________
-void AliPHOSvImpacts::MakeBranch(Option_t *opt, const char *file)
+void AliPHOSvImpacts::MakeBranch(Option_t *opt)
 {  
   // Create new branch in the current Hits Root Tree containing
   // a list of PHOS impacts (exact values of track coming to detector)
 
-  AliDetector::MakeBranch(opt,file);
+  AliDetector::MakeBranch(opt);
   
   Int_t bufferSize = 32000 ;
   Int_t splitlevel = 0 ;
-  gAlice->TreeH()->Branch("PHOSEmcImpacts" , "TList", &fEMCImpacts , bufferSize, splitlevel);
-  gAlice->TreeH()->Branch("PHOSCpvImpacts" , "TList", &fCPVImpacts , bufferSize, splitlevel);
-  gAlice->TreeH()->Branch("PHOSPpsdImpacts", "TList", &fPPSDImpacts, bufferSize, splitlevel);
+  TreeH()->Branch("PHOSEmcImpacts" , "TList", &fEMCImpacts , bufferSize, splitlevel);
+  TreeH()->Branch("PHOSCpvImpacts" , "TList", &fCPVImpacts , bufferSize, splitlevel);
   
 }
 
@@ -184,22 +176,13 @@ void AliPHOSvImpacts::ResetHits()
 
   Int_t i;
   for (i=0; i<GetGeometry()->GetNModules(); i++) {
-    ((TClonesArray*)fEMCImpacts->At(i)) -> Clear();
+    (dynamic_cast<TClonesArray*>(fEMCImpacts->At(i))) -> Clear();
     fNEMCImpacts[i] = 0 ;
   }
 
-  if ( strcmp(GetGeometry()->GetName(),"IHEP") == 0 || strcmp(GetGeometry()->GetName(),"MIXT") == 0 ) {
-    for (i=0; i<GetGeometry()->GetNCPVModules(); i++) {
-      ((TClonesArray*)fCPVImpacts->At(i)) -> Clear();
-      fNCPVImpacts[i] = 0 ;
-    }
-  }
-
-  if ( strcmp(GetGeometry()->GetName(),"GPS2") == 0 || strcmp(GetGeometry()->GetName(),"MIXT") == 0 ) {
-    for (i=0; i<GetGeometry()->GetNPPSDModules(); i++) {
-      ((TClonesArray*)fPPSDImpacts->At(i)) -> Clear();
-      fNPPSDImpacts[i] = 0 ;
-    }
+  for (i=0; i<GetGeometry()->GetNModules(); i++) {
+    (dynamic_cast<TClonesArray*>(fCPVImpacts->At(i))) -> Clear();
+    fNCPVImpacts[i] = 0 ;
   }
   
 }
@@ -207,7 +190,7 @@ void AliPHOSvImpacts::ResetHits()
 //_____________________________________________________________________________
 void AliPHOSvImpacts::StepManager(void)
 {
-  // Find impacts (tracks which enter the EMC, CPV or PPSD)
+  // Find impacts (tracks which enter the EMC, CPV)
   // and add them to to the impact lists
 
   AliPHOSv1::StepManager();
@@ -217,8 +200,8 @@ void AliPHOSvImpacts::StepManager(void)
   TLorentzVector pos      ;           // Lorentz vector of the track current position
   Int_t          copy     ;
 
-  Int_t tracknumber =  gAlice->CurrentTrack() ; 
-  Int_t primary     =  gAlice->GetPrimary( gAlice->CurrentTrack() ); 
+  Int_t tracknumber =  gAlice->GetMCApp()->GetCurrentTrackNumber() ; 
+  Int_t primary     =  gAlice->GetMCApp()->GetPrimary( gAlice->GetMCApp()->GetCurrentTrackNumber() ); 
   TString name      =  GetGeometry()->GetName() ; 
 
   // Add impact to EMC
@@ -239,13 +222,12 @@ void AliPHOSvImpacts::StepManager(void)
     gMC -> Gmtod (pm,   pd,   2);    // transform 3-momentum from master to daughter system
 
     // Select tracks coming to the crystal from up or down sides
-    if (pd[1]<0 && xyzd[1] >  GetGeometry()->GetCrystalSize(1)/2-0.001 ||
-       pd[1]>0 && xyzd[1] < -GetGeometry()->GetCrystalSize(1)/2+0.001) {
+    if (pd[1]<0 && xyzd[1] >  GetGeometry()->GetCrystalSize(1)/2-0.1 ||
+       pd[1]>0 && xyzd[1] < -GetGeometry()->GetCrystalSize(1)/2+0.1) {
+    // Select tracks coming to the crystal from up or down sides
       Int_t pid = gMC->TrackPid();
       Int_t module;
       gMC->CurrentVolOffID(10,module);
-      if ( name == "MIXT" && strcmp(gMC->CurrentVolOffName(10),"PHO1") == 0 )
-       module += GetGeometry()->GetNModules() - GetGeometry()->GetNPPSDModules();
       module--;
       AddImpact("EMC ",fIshunt, primary,tracknumber, module, pid, pmom, xyzm);
     }
@@ -253,8 +235,7 @@ void AliPHOSvImpacts::StepManager(void)
 
   // Add impact to CPV
 
-  if( (name == "IHEP" || name == "MIXT") &&
-      gMC->CurrentVolID(copy) == gMC->VolId("PCPQ") &&
+  if( gMC->CurrentVolID(copy) == gMC->VolId("PCPQ") &&
       gMC->IsTrackEntering() ) {
     gMC->TrackMomentum(pmom);
     gMC->TrackPosition(pos) ;
@@ -272,33 +253,5 @@ void AliPHOSvImpacts::StepManager(void)
     module--;
     AddImpact("CPV ",fIshunt, primary,tracknumber, module, pid, pmom, xyzm);
   }
-
-  // Add impact to PPSD
-
-  if( (name == "GPS2" || name == "MIXT") &&
-      gMC->CurrentVolID(copy) == gMC->VolId("PPCE") &&
-      gMC->IsTrackEntering() ) {
-    gMC->TrackMomentum(pmom);
-    gMC->TrackPosition(pos) ;
-
-    Int_t i;
-    for (i=0; i<3; i++) xyzm[i] = pos[i];
-
-    for (i=0; i<3; i++) {
-      xyzm[i] = pos[i] ;
-      pm[i]   = pmom[i];
-    }
-    gMC -> Gmtod (xyzm, xyzd, 1);    // transform coordinate from master to daughter system
-    gMC -> Gmtod (pm,   pd,   2);    // transform 3-momentum from master to daughter system
-
-    // Select tracks coming to the crystal from up or down sides
-    if (pd[1]<0 && xyzd[1] >  (GetGeometry()->GetConversionGap() +  GetGeometry()->GetAvalancheGap())/2-0.001 ||
-       pd[1]>0 && xyzd[1] < -(GetGeometry()->GetConversionGap() +  GetGeometry()->GetAvalancheGap())/2+0.001) {
-      Int_t pid = gMC->TrackPid();
-      Int_t module;
-      gMC->CurrentVolOffID(5,module);
-      module--;
-      AddImpact("PPSD",fIshunt, primary,tracknumber, module, pid, pmom, xyzm);
-    }
-  }
+  
 }