#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();
}
* 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;
}
-
}
//============================================================================
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();
+// }
- }
-}
+// }
+// }
+