Int_t fClusterSize; //! ClusterSize
Int_t fNPeaks; //! NPeaks
// Data members needed to fill AliCluster objects
- Float_t fYshift[2200]; // y-shifts of detector local coor. systems
- Float_t fZshift[2200]; // z-shifts of detector local coor. systems
Int_t fNdet[2200]; // detector index
Int_t fNlayer[2200]; // detector layer
AliITSClusterFinder& operator=(const AliITSClusterFinder &source);
- ClassDef(AliITSClusterFinder,6) //Class for clustering and reconstruction of space points
+ ClassDef(AliITSClusterFinder,7) //Class for clustering and reconstruction of space points
};
// Input and output functions for standard C++ input/output.
ostream &operator<<(ostream &os,AliITSClusterFinder &source);
#include "AliITSsegmentationSDD.h"
#include <TClonesArray.h>
#include "AliITSdigitSDD.h"
+#include "AliITSgeomTGeo.h"
ClassImp(AliITSClusterFinderV2SDD)
//------------------------------------------------------------
// Actual SDD cluster finder
//------------------------------------------------------------
+
+ const TGeoHMatrix *mT2L=AliITSgeomTGeo::GetTracking2LocalMatrix(fModule);
+
AliITSCalibrationSDD* cal = (AliITSCalibrationSDD*)GetResp(fModule);
Int_t ncl=0;
TClonesArray &cl=*clusters;
CorrectPosition(zdet,xdet);
- y=-(-xdet+fYshift[fModule]);
- z= -zdet+fZshift[fModule];
-
+ {
+ Double_t loc[3]={xdet,0.,zdet},trk[3]={0.,0.,0.};
+ mT2L->MasterToLocal(loc,trk);
+ y=trk[1];
+ z=trk[2];
+ }
q/=5.243; //to have MPV 1 MIP = 86.4 KeV --> this must go to calibr.
Float_t hit[5] = {y, z, 0.0030*0.0030, 0.0020*0.0020, q};
Int_t info[3] = {maxj-minj+1, maxi-mini+1, fNlayer[fModule]};
//Cluster finder for SPD (from digits and from rawdata)
+ const TGeoHMatrix *mT2L=AliITSgeomTGeo::GetTracking2LocalMatrix(iModule);
+
Int_t nclu=0;
for(Int_t iBin =0; iBin < maxBins;iBin++){
if(bins[iBin].IsUsed()) continue;
z /= q;
y -= fHwSPD;
z -= fHlSPD;
- Float_t hit[5]; //y,z,sigma(y)^2, sigma(z)^2, charge
-
- if (iModule <= fLastSPD1) hit[0] = -y+fYshift[iModule];
- else hit[0] = y+fYshift[iModule];
- hit[1] = -z+fZshift[iModule];
+ Float_t hit[5]; //y,z,sigma(y)^2, sigma(z)^2, charge
+ {
+ Double_t loc[3]={y,0.,z},trk[3]={0.,0.,0.};
+ mT2L->MasterToLocal(loc,trk);
+ hit[0]=trk[1];
+ hit[1]=trk[2];
+ }
hit[2] = fYpitchSPD*fYpitchSPD/12.;
hit[3] = fZ1pitchSPD*fZ1pitchSPD/12.;
hit[4] = 1.;
+
if(!rawdata) milab[3]=fNdet[iModule];
Int_t info[3] = {ymax-ymin+1,zmax-zmin+1,fNlayer[iModule]};
if(!rawdata){
Int_t prevFlag = -1;
Int_t prevModule = -1;
Float_t gain=0;
- AliITSCalibrationSSD* cal;
+ AliITSCalibrationSSD* cal=NULL;
// read raw data input stream
//------------------------------------------------------------
// Actual SSD cluster finder
//------------------------------------------------------------
+
+ const TGeoHMatrix *mT2L=AliITSgeomTGeo::GetTracking2LocalMatrix(fModule);
+
TClonesArray &cl=*clusters;
//
Float_t tanp=fTanP, tann=fTanN;
zt-=fHlSSD; yt-=fHwSSD;
ybest=yt; zbest=zt;
qbest=0.5*(pos[ip].GetQ()+neg[j].GetQ());
- lp[0]=-(-ybest+fYshift[fModule]);
- lp[1]= -zbest+fZshift[fModule];
+ {
+ Double_t loc[3]={ybest,0.,zbest},trk[3]={0.,0.,0.};
+ mT2L->MasterToLocal(loc,trk);
+ lp[0]=trk[1];
+ lp[1]=trk[2];
+ }
lp[2]=0.0025*0.0025; //SigmaY2
lp[3]=0.110*0.110; //SigmaZ2
zt-=fHlSSD; yt-=fHwSSD;
ybest =yt; zbest=zt;
qbest =pos[ip].GetQ();
- lp[0]=-(-ybest+fYshift[fModule]);
- lp[1]= -zbest+fZshift[fModule];
+ {
+ Double_t loc[3]={ybest,0.,zbest},trk[3]={0.,0.,0.};
+ mT2L->MasterToLocal(loc,trk);
+ lp[0]=trk[1];
+ lp[1]=trk[2];
+ }
lp[2]=0.0025*0.0025; //SigmaY2
lp[3]=0.110*0.110; //SigmaZ2
zt-=fHlSSD; yt-=fHwSSD;
ybest =yt; zbest=zt;
qbest =pos[ip2].GetQ();
- lp[0]=-(-ybest+fYshift[fModule]);
- lp[1]= -zbest+fZshift[fModule];
+ {
+ Double_t loc[3]={ybest,0.,zbest},trk[3]={0.,0.,0.};
+ mT2L->MasterToLocal(loc,trk);
+ lp[0]=trk[1];
+ lp[1]=trk[2];
+ }
lp[2]=0.0025*0.0025; //SigmaY2
lp[3]=0.110*0.110; //SigmaZ2
zt-=fHlSSD; yt-=fHwSSD;
ybest =yt; zbest=zt;
qbest =neg[jn].GetQ();
- lp[0]=-(-ybest+fYshift[fModule]);
- lp[1]= -zbest+fZshift[fModule];
+ {
+ Double_t loc[3]={ybest,0.,zbest},trk[3]={0.,0.,0.};
+ mT2L->MasterToLocal(loc,trk);
+ lp[0]=trk[1];
+ lp[1]=trk[2];
+ }
lp[2]=0.0025*0.0025; //SigmaY2
lp[3]=0.110*0.110; //SigmaZ2
zt-=fHlSSD; yt-=fHwSSD;
ybest =yt; zbest=zt;
qbest =neg[jn2].GetQ();
- lp[0]=-(-ybest+fYshift[fModule]);
- lp[1]= -zbest+fZshift[fModule];
+ {
+ Double_t loc[3]={ybest,0.,zbest},trk[3]={0.,0.,0.};
+ mT2L->MasterToLocal(loc,trk);
+ lp[0]=trk[1];
+ lp[1]=trk[2];
+ }
lp[2]=0.0025*0.0025; //SigmaY2
lp[3]=0.110*0.110; //SigmaZ2
zt-=fHlSSD; yt-=fHwSSD;
ybest=yt; zbest=zt;
qbest=0.5*(pos[ip].GetQ()+neg[j].GetQ());
- lp[0]=-(-ybest+fYshift[fModule]);
- lp[1]= -zbest+fZshift[fModule];
+ {
+ Double_t loc[3]={ybest,0.,zbest},trk[3]={0.,0.,0.};
+ mT2L->MasterToLocal(loc,trk);
+ lp[0]=trk[1];
+ lp[1]=trk[2];
+ }
lp[2]=0.0025*0.0025; //SigmaY2
lp[3]=0.110*0.110; //SigmaZ2
lp[4]=qbest; //Q
if (TMath::Abs(zt)<fHlSSD+0.01*(neg[j].GetNd()+pos[i].GetNd())) {
ybest=yt; zbest=zt;
qbest=0.5*(pos[i].GetQ()+neg[j].GetQ());
- lp[0]=-(-ybest+fYshift[fModule]);
- lp[1]= -zbest+fZshift[fModule];
+ {
+ Double_t loc[3]={ybest,0.,zbest},trk[3]={0.,0.,0.};
+ mT2L->MasterToLocal(loc,trk);
+ lp[0]=trk[1];
+ lp[1]=trk[2];
+ }
lp[2]=0.0025*0.0025; //SigmaY2
lp[3]=0.110*0.110; //SigmaZ2