]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PMD/AliPMDUtility.cxx
Add printout of S/B in the mass plot (ChiaraB)
[u/mrichter/AliRoot.git] / PMD / AliPMDUtility.cxx
index dd838f9dbb381a4c74dac5419c8959bd3f802ec0..86b8925fcfced17fc10bf95712ae387b46f7fd05 100644 (file)
 #include "TMath.h"
 #include "TText.h"
 #include "TLine.h"
-#include <TClonesArray.h>
 
 #include <stdio.h>
 #include <math.h>
 
 #include "AliPMDUtility.h"
-#include "AliAlignObjMatrix.h"
-#include "AliCDBManager.h"
-#include "AliCDBEntry.h"
-#include "AliLog.h"
-
 
 ClassImp(AliPMDUtility)
 
 AliPMDUtility::AliPMDUtility():
-  fAlObj(GetAlignObj()),
   fPx(0.),
   fPy(0.),
   fPz(0.),
@@ -61,7 +54,6 @@ AliPMDUtility::AliPMDUtility():
 }
 
 AliPMDUtility::AliPMDUtility(Float_t px, Float_t py, Float_t pz):
-  fAlObj(GetAlignObj()),
   fPx(px),
   fPy(py),
   fPz(pz),
@@ -82,7 +74,6 @@ AliPMDUtility::AliPMDUtility(Float_t px, Float_t py, Float_t pz):
 }
 AliPMDUtility::AliPMDUtility(const AliPMDUtility &pmdutil):
   TObject(pmdutil),
-  fAlObj(pmdutil.GetAlignObj()),
   fPx(pmdutil.fPx),
   fPy(pmdutil.fPy),
   fPz(pmdutil.fPz),
@@ -564,8 +555,8 @@ void AliPMDUtility::GenerateBoundaryPoints(Int_t ism, Float_t &x1ism,
 void AliPMDUtility::DrawPMDModule(Int_t idet)
 {
 
-    Float_t x1ism, x2ism, y1ism, y2ism;
-    Float_t deltaX, deltaY;
+    Float_t x1ism = 0., x2ism = 0., y1ism = 0., y2ism = 0.;
+    Float_t deltaX = 0., deltaY = 0.;
     
     //TH2F *h2 = new TH2F("h2","Y vs. X",200,-100.,100.,200,-100.,100.);
     //h2->Draw();
@@ -587,11 +578,11 @@ void AliPMDUtility::DrawPMDModule(Int_t idet)
        {
          if(idet == 0)
            {
-             sprintf(smnumber,"%d",ism);
+             snprintf(smnumber,10,"%d",ism);
            }
          else if (idet == 1)
            {
-             sprintf(smnumber,"%d",24+ism);
+             snprintf(smnumber,10,"%d",24+ism);
            }
            tt.DrawText(x1ism+deltaX,y1ism+deltaY,smnumber);
        }
@@ -614,22 +605,15 @@ void AliPMDUtility::ApplyVertexCorrection(Float_t vertex[], Float_t xpos,
   fPy = ypos - vertex[1];
   fPz = zpos - vertex[2];
 }
-void AliPMDUtility::ApplyAlignment()
+void AliPMDUtility::ApplyAlignment(Double_t sectr[][3])
 {
   // Get the alignment stuff here
 
-  AliAlignObjMatrix * aam;
-  Double_t tr[3];
-  //Double_t secTr[4][3];
-
   for (Int_t isector=0; isector<4; isector++)
     {
-      aam = (AliAlignObjMatrix*)fAlObj->UncheckedAt(isector);
-      aam->GetTranslation(tr);
-      
       for(Int_t ixyz=0; ixyz < 3; ixyz++)
        {
-         fSecTr[isector][ixyz] = (Float_t) tr[ixyz];
+         fSecTr[isector][ixyz] = (Float_t) sectr[isector][ixyz];
        }
     }
 }
@@ -653,17 +637,15 @@ void AliPMDUtility::SetWriteModule(Int_t wrmod)
 }
 void AliPMDUtility::CalculateEta()
 {
-  Float_t rpxpy, theta, eta;
-
-  rpxpy  = TMath::Sqrt(fPx*fPx + fPy*fPy);
-  theta  = TMath::ATan2(rpxpy,fPz);
-  eta    = -TMath::Log(TMath::Tan(0.5*theta));
+  Float_t rpxpy  = TMath::Sqrt(fPx*fPx + fPy*fPy);
+  Float_t theta  = TMath::ATan2(rpxpy,fPz);
+  Float_t eta    = -TMath::Log(TMath::Tan(0.5*theta));
   fTheta = theta;
   fEta   = eta;
 }
 void AliPMDUtility::CalculatePhi()
 {
-  Float_t pybypx, phi = 0., phi1;
+  Float_t pybypx = 0., phi = 0., phi1 = 0.;
 
   if(fPx==0)
     {
@@ -689,12 +671,11 @@ void AliPMDUtility::CalculatePhi()
 }
 void AliPMDUtility::CalculateEtaPhi()
 {
-  Float_t rpxpy, theta, eta;
-  Float_t pybypx, phi = 0., phi1;
+  Float_t pybypx = 0., phi = 0., phi1 = 0.;
 
-  rpxpy = TMath::Sqrt(fPx*fPx + fPy*fPy);
-  theta = TMath::ATan2(rpxpy,fPz);
-  eta   = -TMath::Log(TMath::Tan(0.5*theta));
+  Float_t rpxpy = TMath::Sqrt(fPx*fPx + fPy*fPy);
+  Float_t theta = TMath::ATan2(rpxpy,fPz);
+  Float_t eta   = -TMath::Log(TMath::Tan(0.5*theta));
   
   if(fPx == 0)
     {
@@ -734,6 +715,55 @@ void AliPMDUtility::CalculateXY(Float_t eta, Float_t phi, Float_t zpos)
   fPy  = ypos;
   fPz  = zpos;
 }
+
+void AliPMDUtility::GetEtaIndexXY(Int_t smn, Int_t row, Int_t col, Float_t &xp, Float_t &yp, Double_t &eta, Int_t &etaindex) {
+  // Takes smn, row, col
+  // Calculates x, y, eta and etabin into 10. 
+  // Use only in raw Data.
+
+  Float_t xx = 0., yy = 0.;
+  Int_t xpad = -1, ypad = -1;
+  
+  if(smn <12) {
+    xpad = col;
+    ypad = row;
+  }
+  else if(smn >=12 && smn < 24) {
+    xpad = row;
+    ypad = col;
+  }
+
+  RectGeomCellPos(smn,xpad,ypad,xx,yy); 
+  xp = xx;
+  yp = yy;
+
+  Float_t rpxpy  = TMath::Sqrt(xx*xx + yy*yy);
+  Float_t theta  = TMath::ATan2(rpxpy,365.0);
+  eta    = -TMath::Log(TMath::Tan(0.5*theta));
+
+  Int_t etaBin = -1;  
+
+  if( eta > 2.1 && eta < 2.3) etaBin = 0;
+  else if( eta > 2.3 && eta < 2.5) etaBin = 1;
+  else if( eta > 2.5 && eta < 2.7) etaBin = 2;
+  else if( eta > 2.7 && eta < 2.9) etaBin = 3;
+  else if( eta > 2.9 && eta < 3.1) etaBin = 4;
+  else if( eta > 3.1 && eta < 3.3) etaBin = 5;
+  else if( eta > 3.3 && eta < 3.5) etaBin = 6;
+  else if( eta > 3.5 && eta < 3.7) etaBin = 7;
+  else if( eta > 3.7 && eta < 3.9) etaBin = 8;
+  else if( eta > 3.9 && eta < 4.1) etaBin = 9;
+  else etaBin = 13;
+
+  etaindex = etaBin;
+
+
+}
+
+//_____________________________________________________
+
 Float_t AliPMDUtility::GetTheta() const
 {
   return fTheta;
@@ -759,20 +789,3 @@ Float_t AliPMDUtility::GetZ() const
   return fPz;
 }
 //--------------------------------------------------------------------//
-TClonesArray* AliPMDUtility::GetAlignObj() const
-{
-  // The run number will be centralized in AliCDBManager,
-  // you don't need to set it here!
-  AliCDBEntry  *entry = AliCDBManager::Instance()->Get("PMD/Align/Data");
-  
-  if(!entry) AliFatal("Alignment object retrieval failed!");
-  
-  TClonesArray *alobj = 0;
-  if (entry) alobj = (TClonesArray*) entry->GetObject();
-  
-  if (!alobj)  AliFatal("No alignment data from  database !");
-  
-  return alobj;
-}
-
-