X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=blobdiff_plain;f=HLT%2FTRD%2FAliHLTTRDTracklet.cxx;h=3552157355374d759be03379dd6e995192584f26;hp=ddf3b307e77d14a32ae9019e359b6198e0719c53;hb=d55e8c51d29ee68acbb49c00978e452137718783;hpb=d679dd6cab9fe537d9129e099ed5b1e70fca6afa diff --git a/HLT/TRD/AliHLTTRDTracklet.cxx b/HLT/TRD/AliHLTTRDTracklet.cxx index ddf3b307e77..35521573553 100644 --- a/HLT/TRD/AliHLTTRDTracklet.cxx +++ b/HLT/TRD/AliHLTTRDTracklet.cxx @@ -1,33 +1,23 @@ #include "AliHLTTRDTracklet.h" -#include "AliHLTTRDCluster.h" - /** * Default Constructor */ //============================================================================ AliHLTTRDTracklet::AliHLTTRDTracklet(): - fTRDtracklet(NULL), - fSize(sizeof(AliHLTTRDTracklet)), - fSigmaY(-1), - fSigmaY2(-1), - fTilt(-1), - fPadLength(-1), + fN(0), + fdX(-1), + fS2Y(-1), + fPt(-1), fX0(-1), - fMeanz(-1), - fZProb(-1), - fN(-1), - fN2(-1), - fNUsed(-1), - fFreq(-1), - fNChange(-1), - fMPads(-1), fC(-1), - fCC(-1), fChi2(-1), - fChi2Z(-1), fDet(-1), - fMom(-1), - fdX(-1) + fCount(0), +#if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC) + fSize(sizeof(AliHLTTRDTracklet)-sizeof(AliHLTTRDCluster)), +#else + fSize(sizeof(AliHLTTRDTracklet)) +#endif { InitArrays(); } @@ -36,173 +26,100 @@ AliHLTTRDTracklet::AliHLTTRDTracklet(): * Main Constructor */ //============================================================================ -AliHLTTRDTracklet::AliHLTTRDTracklet(AliTRDseedV1 * inTracklet): - fTRDtracklet(NULL), - fSize(sizeof(AliHLTTRDTracklet)), - fSigmaY(-1), - fSigmaY2(-1), - fTilt(-1), - fPadLength(-1), - fX0(-1), - fMeanz(-1), - fZProb(-1), - fN(-1), - fN2(-1), - fNUsed(-1), - fFreq(-1), - fNChange(-1), - fMPads(-1), - fC(-1), - fCC(-1), - fChi2(-1), - fChi2Z(-1), - fDet(-1), - fMom(-1), - fdX(-1) +AliHLTTRDTracklet::AliHLTTRDTracklet(const AliTRDseedV1* const inTracklet): + fN(inTracklet->fN), + fdX(inTracklet->fdX), + fS2Y(inTracklet->fS2Y), + fPt(inTracklet->fPt), + fX0(inTracklet->fX0), + fC(inTracklet->fC), + fChi2(inTracklet->fChi2), + fDet(inTracklet->fDet), + fCount(0), +#if defined(__HP_aCC) || defined(__DECCXX) || defined(__SUNPRO_CC) + fSize(sizeof(AliHLTTRDTracklet)-sizeof(AliHLTTRDCluster)), +#else + fSize(sizeof(AliHLTTRDTracklet)) +#endif { - InitArrays(); - - fTRDtracklet = inTracklet; - CopyDataMembers(); - // Print(kFALSE); - AddClusters(); -} - -/** - * Add clusters to the HLTTRDTracklet - */ -//============================================================================ -void AliHLTTRDTracklet::AddClusters() -{ - for (Int_t iTimeBin = 0; iTimeBin < knTimebins; iTimeBin++) - { -// if (fClusters[iTimeBin]) -// HLTWarning("Trying to rewrite cluster in tracklet. Not good."); - AliTRDcluster* trdCluster = fTRDtracklet->GetClusters(iTimeBin); - if (trdCluster){ - AliHLTTRDCluster * hltCluster = new (GetEndPointer()) AliHLTTRDCluster(trdCluster); - fSize += hltCluster->GetSize(); - //HLTInfo("cluster %i; adr 0x%x; endPointer 0x%x; fSize %i", iTimeBin, hltCluster, GetEndPointer(), fSize); - fClusters[iTimeBin] = hltCluster; - } - else - fClusters[iTimeBin] = NULL; - - } + CopyDataMembers(inTracklet); } /** * Copy simple (non-pointer) data members from TRDTracklet to HLTTRDTracklet */ //============================================================================ -void AliHLTTRDTracklet::CopyDataMembers() +void AliHLTTRDTracklet::CopyDataMembers(const AliTRDseedV1* const inTracklet) { + //fChi2Z = inTracklet->GetChi2Z(); + for (Int_t i=0; i < 2; i++){ - fYref[i] = fTRDtracklet->GetYref(i); - fZref[i] = fTRDtracklet->GetZref(i); - } - fSigmaY = fTRDtracklet->GetSigmaY(); - fSigmaY2 = fTRDtracklet->GetSigmaY2(); - fTilt = fTRDtracklet->GetTilt(); - fPadLength = fTRDtracklet->GetPadLength(); - - fX0 = fTRDtracklet->GetX0(); - for (Int_t i = 0; i < knTimebins; i++){ - fX[i] = fTRDtracklet->GetX(i); - fY[i] = fTRDtracklet->GetY(i); - fZ[i] = fTRDtracklet->GetZ(i); - fIndexes[i] = fTRDtracklet->GetIndexes(i); - fUsable[i] = fTRDtracklet->IsUsable(i); + fYref[i] = inTracklet->fYref[i]; + fZref[i] = inTracklet->fZref[i]; + fYfit[i] = inTracklet->fYfit[i]; + fZfit[i] = inTracklet->fZfit[i]; } - for (Int_t i=0; i < 2; i++){ - fYfit[i] = fTRDtracklet->GetYfit(i); - fZfit[i] = fTRDtracklet->GetZfit(i); - fYfitR[i] = fTRDtracklet->GetYfitR(i); - fZfitR[i] = fTRDtracklet->GetZfitR(i); - fLabels[i] = fTRDtracklet->GetLabels(i); + for (Int_t i=0; i < 3; i++){ + fPad[i] = inTracklet->fPad[i]; } - fMeanz = fTRDtracklet->GetMeanz(); - fZProb = fTRDtracklet->GetZProb(); - fN = fTRDtracklet->GetNbClusters(); - fN2 = fTRDtracklet->GetN2(); - fNUsed = fTRDtracklet->GetNUsed(); - fFreq = fTRDtracklet->GetFreq(); - fNChange = fTRDtracklet->GetNChange(); - fMPads = fTRDtracklet->GetMPads(); - - fC = fTRDtracklet->GetC(); - fCC = fTRDtracklet->GetCC(); - fChi2 = fTRDtracklet->GetChi2(); - fChi2Z = fTRDtracklet->GetChi2Z(); - - fDet = fTRDtracklet->GetDetector(); - fMom = fTRDtracklet->GetMomentum(); - fdX = fTRDtracklet->GetdX(); + for (Int_t i=0; i < AliPID::kSPECIES; i++){ + fProb[i] = inTracklet->fProb[i]; + } + + for (Int_t iTimeBin = 0; iTimeBin < AliTRDseedV1::kNclusters; iTimeBin++) + { + AliTRDcluster* trdCluster = inTracklet->GetClusters(iTimeBin); + if (trdCluster){ + new (&fClusters[fCount]) AliHLTTRDCluster(trdCluster); + fCount++; + fSize += sizeof(AliHLTTRDCluster); + } + } + //if((void*)&fClusters[fCount].Index!=(void*)GetEndPointer()){printf("ERRR");return;} } /** * Copy data to the output TRDseedV1 */ //============================================================================ -void AliHLTTRDTracklet::ExportTRDTracklet(AliTRDseedV1 *outTracklet) +void AliHLTTRDTracklet::ExportTRDTracklet(AliTRDseedV1* const outTracklet) const { - outTracklet->Reset(); - /* ======= From AliTRDseedV1 ======== */ - outTracklet->SetDetector(fDet); - outTracklet->SetMomentum(fMom); - outTracklet->SetDX(fdX); - - /* ======= From AliTRDseed ======== */ + //outTracklet->Reset(); we always use a fresh trdtracklet as input, so this is useless + outTracklet->SetBit(AliTRDseedV1::kOwner); + + outTracklet->fN = fN; + outTracklet->fDet = fDet; + outTracklet->fdX = fdX; + outTracklet->fX0 = fX0; + outTracklet->fS2Y = fS2Y; + outTracklet->fPt = fPt; + outTracklet->fC = fC; + outTracklet->fChi2 = fChi2; + for (Int_t i=0; i < 2; i++){ - outTracklet->SetYref(i, fYref[i]); - outTracklet->SetZref(i, fZref[i]); + outTracklet->fYref[i] = fYref[i]; + outTracklet->fZref[i] = fZref[i]; + outTracklet->fYfit[i] = fYfit[i]; + outTracklet->fZfit[i] = fZfit[i]; } - - outTracklet->SetSigmaY(fSigmaY); - outTracklet->SetSigmaY2(fSigmaY2); - outTracklet->SetTilt(fTilt); - outTracklet->SetPadLength(fPadLength); - outTracklet->SetX0(fX0); - for (Int_t i=0; i < knTimebins; i++){ - outTracklet->SetX(i,fX[i]); - outTracklet->SetX(i,fY[i]); - outTracklet->SetX(i,fZ[i]); - outTracklet->SetIndexes(i, fIndexes[i]); - outTracklet->SetUsable(i, fUsable[i]); + for (Int_t i=0; i < 3; i++){ + outTracklet->fPad[i] = fPad[i]; } - for (Int_t i=0; i < 2; i++){ - outTracklet->SetYfit(i,fYfit[i]); - outTracklet->SetYfitR(i,fYfitR[i]); - outTracklet->SetZfit(i,fZfit[i]); - outTracklet->SetZfitR(i,fZfitR[i]); - outTracklet->SetLabels(i,fLabels[i]); + + for (Int_t i=0; i < AliPID::kSPECIES; i++){ + outTracklet->fProb[i] = fProb[i]; } - - outTracklet->SetMeanz(fMeanz); - outTracklet->SetZProb(fZProb); - outTracklet->SetN(fN); - outTracklet->SetN2(fN2); - outTracklet->SetNUsed(fNUsed); - outTracklet->SetFreq(fFreq); - outTracklet->SetNChange(fNChange); - outTracklet->SetMPads(fMPads); - outTracklet->SetC(fC); - outTracklet->SetCC(fCC); - outTracklet->SetChi2(fChi2); - outTracklet->SetChi2Z(fChi2Z); - for (Int_t iCluster = 0; iCluster < knTimebins; iCluster++){ - if (fClusters[iCluster]){ - AliTRDcluster *trdCluster = new AliTRDcluster(); - fClusters[iCluster]->ExportTRDCluster(trdCluster); - outTracklet->SetClusters(iCluster, trdCluster); - } + for (UInt_t iCluster=0; iCluster < fCount; iCluster++){ + AliTRDcluster *trdCluster = new AliTRDcluster(); + fClusters[iCluster].ExportTRDCluster(trdCluster); + outTracklet->fClusters[iCluster] = trdCluster; + outTracklet->fIndexes[iCluster] = iCluster; } - } @@ -212,73 +129,51 @@ void AliHLTTRDTracklet::ExportTRDTracklet(AliTRDseedV1 *outTracklet) //============================================================================ void AliHLTTRDTracklet::InitArrays() { - for (Int_t i=0; i < knTimebins; i++){ - fClusters[i] = NULL; - } - for (Int_t i=0; i < 2; i++){ fYref[i] = -1; fZref[i] = -1; - } - for (Int_t i = 0; i < knTimebins; i++){ - fX[i] = -1; - fY[i] = -1; - fZ[i] = -1; - fIndexes[i] = -1; - fUsable[i] = -1; - } - - for (Int_t i=0; i < 2; i++){ fYfit[i] = -1; fZfit[i] = -1; - fYfitR[i] = -1; - fZfitR[i] = -1; - fLabels[i] = -1; } - + for (Int_t i=0; i < AliPID::kSPECIES; i++) + fProb[i]=0; } /** * Prints main info about tracklet */ //============================================================================ -void AliHLTTRDTracklet::Print(Bool_t printClusters) +void AliHLTTRDTracklet::Print(Bool_t printClusters) const { //printf("--hltTracklet-- addr 0x%p(%i); fSize %i\n", this, (int)this, fSize); - printf(" fDet %i; dMom %f; fdX %f fN %i\n", fDet, fMom, fdX, fN); + printf(" fDet %i; fPt %f; fdX %f fN %i\n", fDet, fPt, fdX, fN); - if (printClusters){ - - for (Int_t iCluster = 0; iCluster < knTimebins; iCluster++){ - printf(" [%i] ",iCluster); - if (fClusters[iCluster]){ - fClusters[iCluster]->Print(); - } - else - printf(" NULL\n"); - } + if(!printClusters) return; + for (UInt_t iCluster = 0; iCluster < fCount; iCluster++){ + printf(" [%i] ",iCluster); + fClusters[iCluster].Print(); } - } /** * Read clusters to TRDtracklet from the memory */ //============================================================================ -void AliHLTTRDTracklet::ReadClustersFromMemory(void *input) -{ - AliHLTUInt8_t *iterPtr = (AliHLTUInt8_t*) input; - AliHLTTRDCluster* hltCluster = NULL; +// void AliHLTTRDTracklet::ReadClustersFromMemory(void *input) +// { +// AliHLTUInt8_t *iterPtr = (AliHLTUInt8_t*) input; +// AliHLTTRDCluster* hltCluster = NULL; - for (Int_t iCluster = 0; iCluster < knTimebins; iCluster++){ - // if we had something in the fClusters[iCluster] before copying, - // then this entry in the array should not be empty. Fill it. - if (fClusters[iCluster]){ - hltCluster = (AliHLTTRDCluster*) iterPtr; - fClusters[iCluster] = hltCluster; - iterPtr += hltCluster->GetSize(); - //hltCluster->Print(); - } +// for (Int_t iCluster = 0; iCluster < AliTRDseedV1::kNclusters; iCluster++){ +// // if we had something in the fClusters[iCluster] before copying, +// // then this entry in the array should not be empty. Fill it. +// if (fClusters[iCluster]){ +// hltCluster = (AliHLTTRDCluster*) iterPtr; +// fClusters[iCluster] = hltCluster; +// iterPtr += hltCluster->GetSize(); +// //hltCluster->Print(); +// } - } -} +// } +// } +