X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=PMD%2FAliPMDtracker.cxx;h=bca40916cb08d75b81981d384a8a169e078a21e4;hb=9ec43bae08d88dac2d20d7cdbd6b15784087d34e;hp=4f264a6e437a35cec6d9b188806e7841a6600207;hpb=93ec81f7205a8b78b0345d886cf8cf6e5a193a3a;p=u%2Fmrichter%2FAliRoot.git diff --git a/PMD/AliPMDtracker.cxx b/PMD/AliPMDtracker.cxx index 4f264a6e437..bca40916cb0 100644 --- a/PMD/AliPMDtracker.cxx +++ b/PMD/AliPMDtracker.cxx @@ -40,11 +40,12 @@ #include "AliPMDrecpoint1.h" #include "AliPMDUtility.h" #include "AliPMDDiscriminator.h" +#include "AliPMDEmpDiscriminator.h" #include "AliPMDtracker.h" #include "AliESDPmdTrack.h" -#include "AliESD.h" - +#include "AliESDEvent.h" +#include "AliLog.h" ClassImp(AliPMDtracker) @@ -53,12 +54,10 @@ AliPMDtracker::AliPMDtracker(): fRecpoints(new TClonesArray("AliPMDrecpoint1", 1000)), fPMDcontin(new TObjArray()), fPMDcontout(new TObjArray()), - fPMDdiscriminator(new AliPMDDiscriminator()), fPMDutil(new AliPMDUtility()), fPMDrecpoint(0), fPMDclin(0), fPMDclout(0), - fDebug(0), fXvertex(0.), fYvertex(0.), fZvertex(0.), @@ -70,6 +69,36 @@ AliPMDtracker::AliPMDtracker(): // Default Constructor // } +//--------------------------------------------------------------------// +AliPMDtracker:: AliPMDtracker(const AliPMDtracker & /* tracker */): + TObject(/* tracker */), + fTreeR(0), + fRecpoints(NULL), + fPMDcontin(NULL), + fPMDcontout(NULL), + fPMDutil(NULL), + fPMDrecpoint(0), + fPMDclin(0), + fPMDclout(0), + fXvertex(0.), + fYvertex(0.), + fZvertex(0.), + fSigmaX(0.), + fSigmaY(0.), + fSigmaZ(0.) +{ + // copy constructor + AliError("Copy constructor not allowed"); +} + +//--------------------------------------------------------------------// +AliPMDtracker& AliPMDtracker::operator=(const AliPMDtracker & /* tracker */) +{ + // assignment operator + AliError("Assignment operator not allowed"); + return *this; +} + //--------------------------------------------------------------------// AliPMDtracker::~AliPMDtracker() { @@ -92,6 +121,7 @@ AliPMDtracker::~AliPMDtracker() delete fPMDcontout; fPMDcontout=0; } + delete fPMDutil; } //--------------------------------------------------------------------// void AliPMDtracker::LoadClusters(TTree *treein) @@ -100,7 +130,7 @@ void AliPMDtracker::LoadClusters(TTree *treein) fTreeR = treein; } //--------------------------------------------------------------------// -void AliPMDtracker::Clusters2Tracks(AliESD *event) +void AliPMDtracker::Clusters2Tracks(AliESDEvent *event) { // Converts digits to recpoints after running clustering // algorithm on CPV plane and PREshower plane @@ -108,19 +138,25 @@ void AliPMDtracker::Clusters2Tracks(AliESD *event) Int_t idet; Int_t ismn; - Float_t clusdata[5]; + Float_t clusdata[6]; TBranch *branch = fTreeR->GetBranch("PMDRecpoint"); - if (!branch) return; + if (!branch) + { + AliError("PMDRecpoint branch not found"); + return; + } branch->SetAddress(&fRecpoints); - Int_t nmodules = (Int_t) fTreeR->GetEntries(); - cout << " nmodules = " << nmodules << endl; + Int_t nmodules = (Int_t) branch->GetEntries(); + + AliDebug(1,Form("Number of modules filled in treeR = %d",nmodules)); for (Int_t imodule = 0; imodule < nmodules; imodule++) { - fTreeR->GetEntry(imodule); + branch->GetEntry(imodule); Int_t nentries = fRecpoints->GetLast(); - // cout << " nentries = " << nentries << endl; + AliDebug(2,Form("Number of clusters per modules filled in treeR = %d" + ,nentries)); for(Int_t ient = 0; ient < nentries+1; ient++) { fPMDrecpoint = (AliPMDrecpoint1*)fRecpoints->UncheckedAt(ient); @@ -130,28 +166,29 @@ void AliPMDtracker::Clusters2Tracks(AliESD *event) clusdata[1] = fPMDrecpoint->GetClusY(); clusdata[2] = fPMDrecpoint->GetClusADC(); clusdata[3] = fPMDrecpoint->GetClusCells(); - clusdata[4] = fPMDrecpoint->GetClusRadius(); - - fPMDclin = new AliPMDcluster(idet,ismn,clusdata); + clusdata[4] = fPMDrecpoint->GetClusSigmaX(); + clusdata[5] = fPMDrecpoint->GetClusSigmaY(); + + fPMDclin = new AliPMDrecpoint1(idet,ismn,clusdata); fPMDcontin->Add(fPMDclin); } } - fPMDdiscriminator->Discrimination(fPMDcontin,fPMDcontout); + AliPMDDiscriminator *pmddiscriminator = new AliPMDEmpDiscriminator(); + pmddiscriminator->Discrimination(fPMDcontin,fPMDcontout); + + const Float_t kzpos = 361.5; // middle of the PMD - const Float_t kzpos = 361.5; - Int_t ism =0, ium=0; Int_t det,smn; Float_t xpos,ypos; - Float_t xpad = 0, ypad = 0; Float_t adc, ncell, rad; - Float_t xglobal, yglobal; + Float_t xglobal = 0., yglobal = 0., zglobal = 0; Float_t pid; - Float_t zglobal = kzpos + (Float_t) fZvertex; Int_t nentries2 = fPMDcontout->GetEntries(); - cout << " nentries2 = " << nentries2 << endl; + AliDebug(1,Form("Number of clusters coming after discrimination = %d" + ,nentries2)); for (Int_t ient1 = 0; ient1 < nentries2; ient1++) { fPMDclout = (AliPMDclupid*)fPMDcontout->UncheckedAt(ient1); @@ -165,15 +202,10 @@ void AliPMDtracker::Clusters2Tracks(AliESD *event) rad = fPMDclout->GetClusRadius(); pid = fPMDclout->GetClusPID(); - // - // Now change the xpos and ypos to its original values - // for the unit modules which are earlier changed. - // xpad and ypad are the real positions. // /********************************************************************** * det : Detector, 0: PRE & 1:CPV * - * smn : Serial Module Number from which Super Module Number * - * and Unit Module Numbers are extracted * + * smn : Serial Module Number 0 to 23 for each plane * * xpos : x-position of the cluster * * ypos : y-position of the cluster * * THESE xpos & ypos are not the true xpos and ypos * @@ -181,49 +213,34 @@ void AliPMDtracker::Clusters2Tracks(AliESD *event) * adc : ADC contained in the cluster * * ncell : Number of cells contained in the cluster * * rad : radius of the cluster (1d fit) * - * ism : Supermodule number extracted from smn * - * ium : Unit module number extracted from smn * - * xpad : TRUE x-position of the cluster * - * ypad : TRUE y-position of the cluster * **********************************************************************/ // - if(det == 0 || det == 1) + + fPMDutil->RectGeomCellPos(smn,xpos,ypos,xglobal,yglobal); + + if (det == 0) + { + zglobal = kzpos + 1.6; // PREshower plane + } + else if (det == 1) { - if(smn < 12) - { - ism = smn/6; - ium = smn - ism*6; - xpad = ypos; - ypad = xpos; - } - else if( smn >= 12 && smn < 24) - { - ism = smn/6; - ium = smn - ism*6; - xpad = xpos; - ypad = ypos; - } + zglobal = kzpos - 1.7; // CPV plane } - - fPMDutil->RectGeomCellPos(ism,ium,xpad,ypad,xglobal,yglobal); - fPMDutil->SetXYZ(xglobal,yglobal,zglobal); - fPMDutil->CalculateEtaPhi(); - Float_t theta = fPMDutil->GetTheta(); - Float_t phi = fPMDutil->GetPhi(); // Fill ESD AliESDPmdTrack *esdpmdtr = new AliESDPmdTrack(); esdpmdtr->SetDetector(det); - esdpmdtr->SetTheta(theta); - esdpmdtr->SetPhi(phi); + esdpmdtr->SetClusterX(xglobal); + esdpmdtr->SetClusterY(yglobal); + esdpmdtr->SetClusterZ(zglobal); esdpmdtr->SetClusterADC(adc); + esdpmdtr->SetClusterCells(ncell); esdpmdtr->SetClusterPID(pid); event->AddPmdTrack(esdpmdtr); } - } //--------------------------------------------------------------------// void AliPMDtracker::SetVertex(Double_t vtx[3], Double_t evtx[3]) @@ -236,11 +253,6 @@ void AliPMDtracker::SetVertex(Double_t vtx[3], Double_t evtx[3]) fSigmaZ = evtx[2]; } //--------------------------------------------------------------------// -void AliPMDtracker::SetDebug(Int_t idebug) -{ - fDebug = idebug; -} -//--------------------------------------------------------------------// void AliPMDtracker::ResetClusters() { if (fRecpoints) fRecpoints->Clear();