#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.),
}
AliPMDUtility::AliPMDUtility(Float_t px, Float_t py, Float_t pz):
- fAlObj(GetAlignObj()),
fPx(px),
fPy(py),
fPz(pz),
}
AliPMDUtility::AliPMDUtility(const AliPMDUtility &pmdutil):
TObject(pmdutil),
- fAlObj(pmdutil.GetAlignObj()),
fPx(pmdutil.fPx),
fPy(pmdutil.fPy),
fPz(pmdutil.fPz),
{
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);
}
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];
}
}
}
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;
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;
-}
-
-