* provided "as is" without express or implied warranty. *
**************************************************************************/
/* $Id$ */
+
+/* History of cvs commits:
+ *
+ * $Log$
+ * Revision 1.73 2005/05/28 14:19:05 schutz
+ * Compilation warnings fixed by T.P.
+ *
+ */
+
//_________________________________________________________________________
// Implementation version 1 of algorithm class to construct PHOS track segments
// Track segment for PHOS is list of
// Calculates the distance between the EMC RecPoint and the CPV RecPoint
// Clusters are sorted in "rows" and "columns" of width 1 cm
- Float_t delta = 1 ; // Width of the rows in sorting of RecPoints (in cm)
+ //Float_t delta = 1 ; // Width of the rows in sorting of RecPoints (in cm)
// if you change this value, change it as well in xxxRecPoint::Compare()
Float_t distance2Cpv = fRcpv ;
- Float_t distance2Track = fRcpv ;
+ Float_t distance2Track = fRtpc ;
trackindex = -1 ; // closest track within fRCpv
Int_t iClosestTrack = -1;
Double_t minDistance = 1e6;
Double_t pxyz[3], xyz[3];
+ Double_t rPHOS =
+ AliPHOSGetter::Instance()->PHOSGeometry()->GetIPtoCrystalSurface();
AliESDtrack *track;
for (Int_t iTrack=0; iTrack<nTracks; iTrack++) {
track = fESD->GetTrack(iTrack);
if (track->IsPHOS())
continue ;
- track->GetOuterXYZ(xyz); // track coord on the cylinder of PHOS radius
+ if (!track->GetXYZAt(rPHOS, fESD->GetMagneticField(), xyz))
+ continue; //track coord on the cylinder of PHOS radius
if ((TMath::Abs(xyz[0])+TMath::Abs(xyz[1])+TMath::Abs(xyz[2]))<=0)
- continue;
- track->GetOuterPxPyPz(pxyz); // track momentum ibid.
+ continue;
+ if (!track->GetPxPyPzAt(rPHOS, fESD->GetMagneticField(), pxyz))
+ continue; // track momentum ibid.
vecDist = PropagateToPlane(xyz,pxyz,"CPV",cpvClu->GetPHOSMod());
- Info("GetDistanceInPHOSPlane","Track %d propagation to CPV = (%f,%f,%f)",
- iTrack,vecDist.X(),vecDist.Y(),vecDist.Z());
+ // Info("GetDistanceInPHOSPlane","Track %d propagation to CPV = (%f,%f,%f)",
+ // iTrack,vecDist.X(),vecDist.Y(),vecDist.Z());
vecDist -= vecCpv;
distance2Track = TMath::Sqrt(vecDist.X()*vecDist.X() + vecDist.Z()*vecDist.Z());
// Find the closest track to the EMC recpoint
if (iClosestTrack != -1) {
track = fESD->GetTrack(iClosestTrack);
- track->GetOuterPxPyPz(pxyz); // track momentum ibid.
+ if (track->GetPxPyPzAt(rPHOS, fESD->GetMagneticField(), pxyz)) { // track momentum ibid.
TVector3 vecCpvGlobal; // Global position of the CPV recpoint
AliPHOSGetter * gime = AliPHOSGetter::Instance() ;
const AliPHOSGeometry * geom = gime->PHOSGeometry() ;
// iClosestTrack,vecDist.X(),vecDist.Y(),vecDist.Z());
vecDist -= vecEmc;
distance2Track = TMath::Sqrt(vecDist.X()*vecDist.X() + vecDist.Z()*vecDist.Z());
+ }
}
// } else {
// // If no ESD exists, than simply find EMC-CPV distance
// distance = (vecCpv - vecEmc).Mag() ;
- if(distance2Track < fRcpv + 2*delta )
+ //if(distance2Track < fRcpv + 2*delta )
+ if(distance2Track < fRtpc )
trackindex = iClosestTrack ;
// toofar = kFALSE ;
}
//____________________________________________________________________________
TVector3 AliPHOSTrackSegmentMakerv1::PropagateToPlane(Double_t *x, Double_t *p,
- char *det, Int_t moduleNumber) const
+ const char *det, Int_t moduleNumber) const
{
// Propagate a straight-line track from the origin point x
// along the direction p to the CPV or EMC module moduleNumber
{
// Make all memory allocations that are not possible in default constructor
- AliPHOSGetter* gime = AliPHOSGetter::Instance(GetTitle(), fEventFolderName.Data());
+ AliPHOSGetter* gime = AliPHOSGetter::Instance();
+ if(!gime)
+ gime = AliPHOSGetter::Instance(GetTitle(), fEventFolderName.Data());
fLinkUpArray = new TClonesArray("AliPHOSLink", 1000);
if ( !gime->TrackSegmentMaker() ) {
void AliPHOSTrackSegmentMakerv1::InitParameters()
{
//Initializes parameters
- fRcpv = 10. ;
+ fRcpv = 10. ;
+ fRtpc = 4. ;
fEmcFirst = 0 ;
fEmcLast = 0 ;
fCpvFirst = 0 ;
fCpvLast = 0 ;
fLinkUpArray = 0 ;
+ fWrite = kTRUE ;
fTrackSegmentsInRun = 0 ;
SetEventRange(0,-1) ;
}
(dynamic_cast<AliPHOSTrackSegment *>(trackSegments->At(fNTrackSegments)))->SetIndexInList(fNTrackSegments);
fNTrackSegments++ ;
-
emcExist[linkUp->GetEmc()-fEmcFirst] = -1 ; //Mark emc that Cpv was found
//mark CPV recpoint as already used
cpvExist[linkUp->GetCpv()-fCpvFirst] = kFALSE ;
return ;
}
- AliPHOSGetter * gime = AliPHOSGetter::Instance(GetTitle()) ;
+ AliPHOSGetter * gime = AliPHOSGetter::Instance() ;
const AliPHOSGeometry * geom = gime->PHOSGeometry() ;
- if (fLastEvent == -1) fLastEvent = gime->MaxEvent() - 1 ;
- else fLastEvent = TMath::Min(fFirstEvent,gime->MaxEvent());
+ if (fLastEvent == -1)
+ fLastEvent = gime->MaxEvent() - 1 ;
+ else
+ fLastEvent = TMath::Min(fFirstEvent,gime->MaxEvent());
Int_t nEvents = fLastEvent - fFirstEvent + 1;
Int_t ievent ;
for (ievent = fFirstEvent; ievent <= fLastEvent; ievent++) {
gime->Event(ievent,"R") ;
- //Make some initializations
+ //Make some initializations
fNTrackSegments = 0 ;
fEmcFirst = 0 ;
fEmcLast = 0 ;
//increment the total number of track segments per run
fTrackSegmentsInRun += gime->TrackSegments()->GetEntriesFast() ;
-
}
if(strstr(option,"tim")){
gBenchmark->GetCpuTime("PHOSTSMaker"),
gBenchmark->GetCpuTime("PHOSTSMaker")/nEvents) ;
}
- Unload();
+ if(fWrite) //do not unload in "on flight" mode
+ Unload();
}
//____________________________________________________________________________
}
//____________________________________________________________________________
-void AliPHOSTrackSegmentMakerv1::Print()const
+void AliPHOSTrackSegmentMakerv1::Print(const Option_t *)const
{
// Print TrackSegmentMaker parameters
TClonesArray * trackSegments = gime->TrackSegments() ;
trackSegments->Expand(trackSegments->GetEntriesFast()) ;
- TTree * treeT = gime->TreeT();
-
- //First TS
- Int_t bufferSize = 32000 ;
- TBranch * tsBranch = treeT->Branch("PHOSTS",&trackSegments,bufferSize);
- tsBranch->Fill() ;
-
- gime->WriteTracks("OVERWRITE");
- gime->WriteTrackSegmentMaker("OVERWRITE");
+ if(fWrite){ //We write TreeT
+ TTree * treeT = gime->TreeT();
+
+ //First TS
+ Int_t bufferSize = 32000 ;
+ TBranch * tsBranch = treeT->Branch("PHOSTS",&trackSegments,bufferSize);
+ tsBranch->Fill() ;
+
+ gime->WriteTracks("OVERWRITE");
+ gime->WriteTrackSegmentMaker("OVERWRITE");
+ }
}