]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PHOS/AliPHOSAnalyze.cxx
Comments corrected.
[u/mrichter/AliRoot.git] / PHOS / AliPHOSAnalyze.cxx
index 66e06ba388b6560c8e39af3657917417fea19306..b198b1f77333a8bab2850ea09867e180b939588b 100644 (file)
 #include "TH2.h"
 #include "TParticle.h"
 #include "TClonesArray.h"
-#include "TTree.h"
 #include "TMath.h"
 #include "TROOT.h"
-#include "TFolder.h"
 
 // --- Standard library ---
 
 // --- AliRoot header files ---
 
-#include "AliRun.h"
+#include "AliLog.h"
 #include "AliStack.h"
-#include "AliPHOSv1.h"
+#include "AliPHOSGeometry.h"
 #include "AliPHOSAnalyze.h"
 #include "AliPHOSDigit.h"
 #include "AliPHOSSDigitizer.h"
+#include "AliPHOSEmcRecPoint.h"
+#include "AliPHOSCpvRecPoint.h"
 #include "AliPHOSTrackSegment.h"
 #include "AliPHOSRecParticle.h"
-#include "AliPHOSCpvRecPoint.h"
 #include "AliPHOSLoader.h"
 
 
 ClassImp(AliPHOSAnalyze)
 
 //____________________________________________________________________________
-  AliPHOSAnalyze::AliPHOSAnalyze()
+AliPHOSAnalyze::AliPHOSAnalyze():
+  fCorrection(1.2),  //Value calculated for default parameters of reconstruction
+  fEvt(0),
+  ffileName(),
+  fRunLoader(0)
 {
   // default ctor (useless)
-  fCorrection = 1.2 ;  //Value calculated for default parameters of reconstruction  
-  fRunLoader = 0x0;
 }
 
 //____________________________________________________________________________
-AliPHOSAnalyze::AliPHOSAnalyze(Text_t * fileName)
+AliPHOSAnalyze::AliPHOSAnalyze(Text_t * fileName):
+  fCorrection(1.05),  //Value calculated for default parameters of reconstruction   
+  fEvt(0),
+  ffileName(fileName),
+  fRunLoader(0)
 {
   // ctor: analyze events from root file "name"
-  ffileName = fileName;
-  fCorrection = 1.05 ;  //Value calculated for default parameters of reconstruction   
   fRunLoader = AliRunLoader::Open(fileName,"AliPHOSAnalyze");
   if (fRunLoader == 0x0)
    {
-     Error("AliPHOSAnalyze","Error Loading session");
+     AliError(Form("Error Loading session"));
    }
 }
 
 //____________________________________________________________________________
-AliPHOSAnalyze::AliPHOSAnalyze(const AliPHOSAnalyze & ana)
-  : TObject(ana)
+AliPHOSAnalyze::AliPHOSAnalyze(const AliPHOSAnalyze & ana): 
+  TObject(ana),
+  fCorrection(0.),
+  fEvt(0),
+  ffileName(),
+  fRunLoader(0)
 {
   // copy ctor
   ( (AliPHOSAnalyze &)ana ).Copy(*this) ;
@@ -136,20 +143,20 @@ void AliPHOSAnalyze::DrawRecon(Int_t Nevent,Int_t Nmod){
   //========== Create ObjectLoader
   if (fRunLoader == 0x0)
    {
-     Error("DrawRecon","Error Loading session");
+     AliError(Form("Error Loading session"));
      return;
    }
   
   AliPHOSLoader* gime = dynamic_cast<AliPHOSLoader*>(fRunLoader->GetLoader("PHOSLoader"));
   if ( gime == 0 ) 
    {
-     Error("DrawRecon","Could not obtain the Loader object !"); 
+     AliError(Form("Could not obtain the Loader object !")); 
      return ;
    } 
   
   
   if(Nevent >= fRunLoader->GetNumberOfEvents() ) {
-    Error("DrawRecon", "There is no event %d only %d events available", Nevent, fRunLoader->GetNumberOfEvents() ) ;
+    AliError(Form("There is no event %d only %d events available", Nevent, fRunLoader->GetNumberOfEvents() )) ;
     return ;
   }
   const AliPHOSGeometry * phosgeom = gime->PHOSGeometry() ; 
@@ -197,6 +204,10 @@ void AliPHOSAnalyze::DrawRecon(Int_t Nevent,Int_t Nmod){
     recPhot->Delete() ;
   recPhot = new TH2F("recPhot","RecParticles with primary Photon",nx,-x,x,nz,-z,z);
   
+  //Get Vertex
+  Double_t vtx[3]={0.,0.,0.} ;  
+//DP: extract vertex either from Generator or from data
+
   
   //Plot Primary Particles
   
@@ -221,7 +232,7 @@ void AliPHOSAnalyze::DrawRecon(Int_t Nevent,Int_t Nmod){
       if( primaryType == 22 ) {
         Int_t moduleNumber ;
         Double_t primX, primZ ;
-        phosgeom->ImpactOnEmc(primary->Theta(), primary->Phi(), moduleNumber, primX, primZ) ;
+        phosgeom->ImpactOnEmc(vtx,primary->Theta(), primary->Phi(), moduleNumber, primX, primZ) ;
         if(moduleNumber==Nmod) 
           phot->Fill(primZ,primX,primary->Energy()) ;
       }
@@ -263,7 +274,7 @@ void AliPHOSAnalyze::DrawRecon(Int_t Nevent,Int_t Nmod){
   TString message ; 
   message  = "Number of EMC + CPV SDigits per module: \n" ;
   message += "%d %d %d %d %d\n"; 
-  Info("DrawRecon", message.Data(), nsdig[0], nsdig[1], nsdig[2], nsdig[3], nsdig[4] ) ;
+  AliInfo(Form(message.Data(), nsdig[0], nsdig[1], nsdig[2], nsdig[3], nsdig[4] )) ;
 
   //Plot digits
   Int_t iDigit ;
@@ -325,7 +336,7 @@ void AliPHOSAnalyze::DrawRecon(Int_t Nevent,Int_t Nmod){
        recParticle = (AliPHOSRecParticle *) rp->At(iRecParticle) ;
        Int_t moduleNumberRec ;
        Double_t recX, recZ ;
-       phosgeom->ImpactOnEmc(recParticle->Theta(), recParticle->Phi(), moduleNumberRec, recX, recZ) ;
+       phosgeom->ImpactOnEmc(vtx,recParticle->Theta(), recParticle->Phi(), moduleNumberRec, recX, recZ) ;
        if(moduleNumberRec == Nmod){
          
          Double_t minDistance = 5. ;
@@ -343,7 +354,7 @@ void AliPHOSAnalyze::DrawRecon(Int_t Nevent,Int_t Nmod){
            primary = fRunLoader->Stack()->Particle(listofprimaries[index]) ;
            Int_t moduleNumber ;
            Double_t primX, primZ ;
-           phosgeom->ImpactOnEmc(primary->Theta(), primary->Phi(), moduleNumber, primX, primZ) ;
+           phosgeom->ImpactOnEmc(vtx,primary->Theta(), primary->Phi(), moduleNumber, primX, primZ) ;
            if(moduleNumberRec == moduleNumber)
              distance = TMath::Sqrt((recX-primX)*(recX-primX)+(recZ-primZ)*(recZ-primZ) ) ;
            if(minDistance > distance)
@@ -384,14 +395,14 @@ void AliPHOSAnalyze::Ls(){
   
   if (fRunLoader == 0x0)
    {
-     Error("Ls","Error Loading session");
+     AliError(Form("Error Loading session"));
      return;
    }
   
   AliPHOSLoader* gime = dynamic_cast<AliPHOSLoader*>(fRunLoader->GetLoader("PHOSLoader"));
   if ( gime == 0 ) 
    {
-     Error("Ls","Could not obtain the Loader object !"); 
+     AliError(Form("Could not obtain the Loader object !")); 
      return ;
    } 
 
@@ -403,7 +414,7 @@ void AliPHOSAnalyze::Ls(){
    {
      if (gime->LoadSDigits("READ"))
       {
-        Error("Ls","Problems with loading summable digits");
+        AliError(Form("Problems with loading summable digits"));
         return;
       }
    }
@@ -425,7 +436,7 @@ void AliPHOSAnalyze::Ls(){
    {
      if (gime->LoadDigits("READ"))
       {
-        Error("Ls","Problems with loading digits");
+        AliError(Form("Problems with loading digits"));
         return;
       }
    }
@@ -448,7 +459,7 @@ void AliPHOSAnalyze::Ls(){
    {
      if (gime->LoadRecPoints("READ"))
       {
-        Error("Ls","Problems with loading rec points");
+        AliError(Form("Problems with loading rec points"));
         return;
       }
    }
@@ -466,7 +477,7 @@ void AliPHOSAnalyze::Ls(){
       message += "\n" ;
     }
   }
-  Info("LS", message.Data()) ;  
+  AliInfo(Form(message.Data())) ;  
 }
 //____________________________________________________________________________
  void AliPHOSAnalyze::InvariantMass()
@@ -474,14 +485,14 @@ void AliPHOSAnalyze::Ls(){
   // Calculates Real and Mixed invariant mass distributions
   if (fRunLoader == 0x0)
    {
-     Error("DrawRecon","Error Loading session");
+     AliError(Form("Error Loading session"));
      return;
    }
   
   AliPHOSLoader* gime = dynamic_cast<AliPHOSLoader*>(fRunLoader->GetLoader("PHOSLoader"));
   if ( gime == 0 ) 
    {
-     Error("DrawRecon","Could not obtain the Loader object !"); 
+     AliError(Form("Could not obtain the Loader object !")); 
      return ;
    } 
   
@@ -543,7 +554,7 @@ void AliPHOSAnalyze::Ls(){
     Int_t iRecParticle ;
     TClonesArray * rp = gime->RecParticles() ;
     if(!rp){
-      Error("InvariantMass", "Can't find RecParticles") ; 
+      AliError(Form("Can't find RecParticles")) ; 
       return ;
     }
 
@@ -658,14 +669,14 @@ void AliPHOSAnalyze::Ls(){
 
   if (fRunLoader == 0x0)
    {
-     Error("DrawRecon","Error Loading session");
+     AliError(Form("Error Loading session"));
      return;
    }
   
   AliPHOSLoader* gime = dynamic_cast<AliPHOSLoader*>(fRunLoader->GetLoader("PHOSLoader"));
   if ( gime == 0 ) 
    {
-     Error("DrawRecon","Could not obtain the Loader object !"); 
+     AliError(Form("Could not obtain the Loader object !")); 
      return ;
    } 
 
@@ -683,21 +694,23 @@ void AliPHOSAnalyze::Ls(){
     //read the current event
     fRunLoader->GetEvent(ievent) ;
 
+    Double_t vtx[3]={0.,0.,0.} ;  
+
     const AliPHOSRecParticle * recParticle ;
     Int_t iRecParticle ;
     TClonesArray * rp = gime->RecParticles() ;
     if(!rp) {
-      Error("EnergyResolution", "Event %d,  Can't find RecParticles ", ievent) ;  
+      AliError(Form("Event %d,  Can't find RecParticles ", ievent)) ;  
       return ;
     }
     TClonesArray * ts = gime->TrackSegments() ;
     if(!ts) {
-      Error("EnergyResolution", "Event %d,  Can't find TrackSegments", ievent) ;  
+      AliError(Form("Event %d,  Can't find TrackSegments", ievent)) ;  
       return ;
     }
     TObjArray * emcrp = gime->EmcRecPoints() ;
     if(!emcrp){
-      Error("EnergyResolution", "Event %d,  Can't find EmcRecPoints") ; 
+      AliError(Form("Event %d,  Can't find EmcRecPoints")) ; 
       return ;
     }
       
@@ -707,7 +720,7 @@ void AliPHOSAnalyze::Ls(){
       //find the closest primary
       Int_t moduleNumberRec ;
       Double_t recX, recZ ;
-      phosgeom->ImpactOnEmc(recParticle->Theta(), recParticle->Phi(), moduleNumberRec, recX, recZ) ;
+      phosgeom->ImpactOnEmc(vtx,recParticle->Theta(), recParticle->Phi(), moduleNumberRec, recX, recZ) ;
       
       Double_t minDistance  = 100. ;
       Int_t closestPrimary = -1 ;
@@ -729,7 +742,7 @@ void AliPHOSAnalyze::Ls(){
 
        Int_t moduleNumber ;
        Double_t primX, primZ ;
-       phosgeom->ImpactOnEmc(primary->Theta(), primary->Phi(), moduleNumber, primX, primZ) ;
+       phosgeom->ImpactOnEmc(vtx,primary->Theta(), primary->Phi(), moduleNumber, primX, primZ) ;
        if(moduleNumberRec == moduleNumber) {
          dX = recX - primX;
          dZ = recZ - primZ;
@@ -811,14 +824,14 @@ void AliPHOSAnalyze::PositionResolution()
 
   if (fRunLoader == 0x0)
    {
-     Error("DrawRecon","Error Loading session");
+     AliError(Form("Error Loading session"));
      return;
    }
   
   AliPHOSLoader* gime = dynamic_cast<AliPHOSLoader*>(fRunLoader->GetLoader("PHOSLoader"));
   if ( gime == 0 ) 
    {
-     Error("DrawRecon","Could not obtain the Loader object !"); 
+     AliError(Form("Could not obtain the Loader object !")); 
      return ;
    } 
   
@@ -832,19 +845,23 @@ void AliPHOSAnalyze::PositionResolution()
     
     //read the current event
     fRunLoader->GetEvent(ievent) ;
+
+    //DP:Extract vertex position
+    Double_t vtx[3]={0.,0.,0.} ;  
+
     TClonesArray * rp = gime->RecParticles() ;
     if(!rp) {
-      Error("PositionResolution", "Event %d,  Can't find RecParticles", ievent) ;
+      AliError(Form("Event %d,  Can't find RecParticles", ievent)) ;
       return ;
     }
     TClonesArray * ts = gime->TrackSegments() ;
     if(!ts) {
-      Error("PositionResolution", "Event %d,  Can't find TrackSegments", ievent) ;
+      AliError(Form("Event %d,  Can't find TrackSegments", ievent)) ;
       return ;
     }
     TObjArray * emcrp = gime->EmcRecPoints() ;
     if(!emcrp){
-      Error("PositionResolution", "Event %d,  Can't find EmcRecPoints", ievent) ;
+      AliError(Form("Event %d,  Can't find EmcRecPoints", ievent)) ;
       return ;
     }
     
@@ -857,7 +874,7 @@ void AliPHOSAnalyze::PositionResolution()
       //find the closest primary
       Int_t moduleNumberRec ;
       Double_t recX, recZ ;
-      phosgeom->ImpactOnEmc(recParticle->Theta(), recParticle->Phi(), moduleNumberRec, recX, recZ) ;
+      phosgeom->ImpactOnEmc(vtx,recParticle->Theta(), recParticle->Phi(), moduleNumberRec, recX, recZ) ;
       
       Double_t minDistance  = 100. ;
       Int_t closestPrimary = -1 ;
@@ -878,7 +895,7 @@ void AliPHOSAnalyze::PositionResolution()
        primary = fRunLoader->Stack()->Particle(listofprimaries[index]) ;
        Int_t moduleNumber ;
        Double_t primX, primZ ;
-       phosgeom->ImpactOnEmc(primary->Theta(), primary->Phi(), moduleNumber, primX, primZ) ;
+       phosgeom->ImpactOnEmc(vtx,primary->Theta(), primary->Phi(), moduleNumber, primX, primZ) ;
        if(moduleNumberRec == moduleNumber) {
          dX = recX - primX;
          dZ = recZ - primZ;
@@ -1033,14 +1050,14 @@ void AliPHOSAnalyze::Contamination(){
 
   if (fRunLoader == 0x0)
    {
-     Error("DrawRecon","Error Loading session");
+     AliError(Form("Error Loading session"));
      return;
    }
   
   AliPHOSLoader* gime = dynamic_cast<AliPHOSLoader*>(fRunLoader->GetLoader("PHOSLoader"));
   if ( gime == 0 ) 
    {
-     Error("DrawRecon","Could not obtain the Loader object !"); 
+     AliError(Form("Could not obtain the Loader object !")); 
      return ;
    } 
   
@@ -1053,19 +1070,22 @@ void AliPHOSAnalyze::Contamination(){
     
     fRunLoader->GetEvent(ievent) ;
     
+    //DP:Extract vertex position
+    Double_t vtx[3]={0.,0.,0.} ;
+
     TClonesArray * rp = gime->RecParticles() ;
     if(!rp) {
-      Error("Contamination", "Event %d,  Can't find RecParticles", ievent) ;
+      AliError(Form("Event %d,  Can't find RecParticles", ievent)) ;
       return ;
     }
     TClonesArray * ts = gime->TrackSegments() ;
     if(!ts) {
-      Error("Contamination", "Event %d,  Can't find TrackSegments", ievent) ;
+      AliError(Form("Event %d,  Can't find TrackSegments", ievent)) ;
       return ;
     }
     TObjArray * emcrp = gime->EmcRecPoints() ;
     if(!emcrp){
-      Error("Contamination", "Event %d,  Can't find EmcRecPoints", ievent) ;
+      AliError(Form("Event %d,  Can't find EmcRecPoints", ievent)) ;
       return ;
     }
     
@@ -1080,7 +1100,7 @@ void AliPHOSAnalyze::Contamination(){
        //check, if photons folls onto PHOS
        Int_t moduleNumber ;
        Double_t primX, primZ ;
-       phosgeom->ImpactOnEmc(primary->Theta(), primary->Phi(), moduleNumber, primX, primZ) ;
+       phosgeom->ImpactOnEmc(vtx,primary->Theta(), primary->Phi(), moduleNumber, primX, primZ) ;
        if(moduleNumber)
          hPrimary->Fill(primary->Energy()) ;
        
@@ -1099,7 +1119,7 @@ void AliPHOSAnalyze::Contamination(){
       //==========find the closest primary       
       Int_t moduleNumberRec ;
       Double_t recX, recZ ;
-      phosgeom->ImpactOnEmc(recParticle->Theta(), recParticle->Phi(), moduleNumberRec, recX, recZ) ;
+      phosgeom->ImpactOnEmc(vtx,recParticle->Theta(), recParticle->Phi(), moduleNumberRec, recX, recZ) ;
       
       Double_t minDistance  = 100. ;
       Int_t closestPrimary = -1 ;
@@ -1118,7 +1138,7 @@ void AliPHOSAnalyze::Contamination(){
        primary = fRunLoader->Stack()->Particle(listofprimaries[index]) ;
        Int_t moduleNumber ;
        Double_t primX, primZ ;
-       phosgeom->ImpactOnEmc(primary->Theta(), primary->Phi(), moduleNumber, primX, primZ) ;
+       phosgeom->ImpactOnEmc(vtx,primary->Theta(), primary->Phi(), moduleNumber, primX, primZ) ;
        if(moduleNumberRec == moduleNumber) {
          dX = recX - primX;
          dZ = recZ - primZ;
@@ -1277,7 +1297,7 @@ void AliPHOSAnalyze::Contamination(){
       totalInd+=counter[i1][i2] ;
   message += "Indentified particles: %d" ; 
   
Info("Contamination", message.Data(), maxevent, 
AliInfo(Form(message.Data(), maxevent, 
       counter[2][0], counter[2][1], counter[2][2], counter[2][3], counter[2][4], 
       counter[3][0], counter[3][1], counter[3][2], counter[3][3], counter[3][4], 
       counter[0][0], counter[0][1], counter[0][2], counter[0][3], counter[0][4], 
@@ -1286,6 +1306,6 @@ void AliPHOSAnalyze::Contamination(){
       counter[5][0], counter[5][1], counter[5][2], counter[5][3], counter[5][4], 
       counter[6][0], counter[6][1], counter[6][2], counter[6][3], counter[6][4], 
       counter[7][0], counter[7][1], counter[7][2], counter[7][3], counter[7][4], 
-      totalInd ) ;
+      totalInd )) ;
 
 }