本文整理汇总了C++中TClonesArray::GetLast方法的典型用法代码示例。如果您正苦于以下问题:C++ TClonesArray::GetLast方法的具体用法?C++ TClonesArray::GetLast怎么用?C++ TClonesArray::GetLast使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TClonesArray
的用法示例。
在下文中一共展示了TClonesArray::GetLast方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CorrectTimeOfFlight
//_____________________________________________________________________________
void THaVDC::CorrectTimeOfFlight(TClonesArray& tracks)
{
const static Double_t v = 3.0e-8; // for now, assume that everything travels at c
// get scintillator planes
THaScintillator* s1 = static_cast<THaScintillator*>
( GetApparatus()->GetDetector("s1") );
THaScintillator* s2 = static_cast<THaScintillator*>
( GetApparatus()->GetDetector("s2") );
if( (s1 == NULL) || (s2 == NULL) )
return;
// adjusts caluculated times so that the time of flight to S1
// is the same as a track going through the middle of the VDC
// (i.e. x_det = 0) at a 45 deg angle (theta_t and phi_t = 0)
// assumes that at least the coarse tracking has been performed
Int_t n_exist = tracks.GetLast()+1;
//cerr<<"num tracks: "<<n_exist<<endl;
for( Int_t t = 0; t < n_exist; t++ ) {
THaTrack* track = static_cast<THaTrack*>( tracks.At(t) );
// calculate the correction, since it's on a per track basis
Double_t s1_dist, vdc_dist, dist, tdelta;
if(!s1->CalcPathLen(track, s1_dist))
s1_dist = 0.0;
if(!CalcPathLen(track, vdc_dist))
vdc_dist = 0.0;
// since the z=0 of the transport coords is inclined with respect
// to the VDC plane, the VDC correction depends on the location of
// the track
if( track->GetX() < 0 )
dist = s1_dist + vdc_dist;
else
dist = s1_dist - vdc_dist;
tdelta = ( fCentralDist - dist) / v;
//cout<<"time correction: "<<tdelta<<endl;
// apply the correction
Int_t n_clust = track->GetNclusters();
for( Int_t i = 0; i < n_clust; i++ ) {
THaVDCUVTrack* the_uvtrack =
static_cast<THaVDCUVTrack*>( track->GetCluster(i) );
if( !the_uvtrack )
continue;
//FIXME: clusters guaranteed to be nonzero?
the_uvtrack->GetUCluster()->SetTimeCorrection(tdelta);
the_uvtrack->GetVCluster()->SetTimeCorrection(tdelta);
}
}
}
示例2: FindVertices
//_____________________________________________________________________________
Int_t THaVDC::FindVertices( TClonesArray& tracks )
{
// Calculate the target location and momentum at the target.
// Assumes that CoarseTrack() and FineTrack() have both been called.
Int_t n_exist = tracks.GetLast()+1;
for( Int_t t = 0; t < n_exist; t++ ) {
THaTrack* theTrack = static_cast<THaTrack*>( tracks.At(t) );
CalcTargetCoords(theTrack, kRotatingTransport);
}
return 0;
}
示例3: FindBadTracks
//_____________________________________________________________________________
void THaVDC::FindBadTracks(TClonesArray& tracks)
{
// Flag tracks that don't intercept S2 scintillator as bad
THaScintillator* s2 = static_cast<THaScintillator*>
( GetApparatus()->GetDetector("s2") );
if(s2 == NULL) {
//cerr<<"Could not find s2 plane!!"<<endl;
return;
}
Int_t n_exist = tracks.GetLast()+1;
for( Int_t t = 0; t < n_exist; t++ ) {
THaTrack* track = static_cast<THaTrack*>( tracks.At(t) );
Double_t x2, y2;
// project the current x and y positions into the s2 plane
if(!s2->CalcInterceptCoords(track, x2, y2)) {
x2 = 0.0;
y2 = 0.0;
}
// if the tracks go out of the bounds of the s2 plane,
// toss the track out
if( (TMath::Abs(x2 - s2->GetOrigin().X()) > s2->GetSize()[0]) ||
(TMath::Abs(y2 - s2->GetOrigin().Y()) > s2->GetSize()[1]) ) {
// for now, we just flag the tracks as bad
track->SetFlag( track->GetFlag() | kBadTrack );
//tracks.RemoveAt(t);
#ifdef WITH_DEBUG
//cout << "Track " << t << " deleted.\n";
#endif
}
}
// get rid of the slots for the deleted tracks
//tracks.Compress();
}
示例4: ojtable
void ojtable(const char *className)
{
static int fTableOffset = 0;
if (!fTableOffset) fTableOffset = gObjectTable->IsA()->GetDataMemberOffset("fTable");
// gObjectTable->Print();
TClass *kl;
if (className && !*className) className=0;
const char *qwe = ".*";
if (className) qwe = className;
TRegexp regexp(qwe);
int regexpLen=0;
int sz = gObjectTable->GetSize();
int *ptr = new int[sz];
int *idx = new int[sz];
TObject **tab = *((TObject ***)((char*)gObjectTable+fTableOffset));
TObject *to;
printf ("tab %p[%d]\n",tab,sz);
int i,num=0;
double hSize=0;
int hNumb=0;
const char *info_name = 0;
for (i=0; i<sz; i++)
{
to = tab[i];
if (!to) continue;
if (!to->TestBit(TObject::kNotDeleted)) continue;
int hs = SizeOfH(to);
if (hs) {
hSize+=hs;
hNumb++;
}
if (className && regexp.Index(to->ClassName(),®expLen)<0) continue;
const char *mk = StMkDeb::GetUser(to);
if(mk && *mk) printf("%s(%p) in %s\n",to->ClassName(),to,mk);
ptr[num++]=int(to);
}
printf("TH1 N=%d, Size = %g\n",hNumb,hSize);
TMath::Sort(num,ptr,idx,0);
int last = 0;
printf("Selected %d objects\n",num);
for (i=0; i<num; i++) {
int ix = idx[i];
to = (TObject*)ptr[ix];
int dist = 0;
if (i) dist = ptr[ix]-last;
last = ptr[ix];
// if ((int)to == 0xc94ff34) {
// printf("Skipped %p\n",to); continue; }
info_name = "??";
info_name=typeid(*to).name();
kl = to->IsA();
printf ("%4d +%6d : obj = %p(%3d) %s::%s \tinfo=%s\n",i,dist,to,kl->Size(),kl->GetName(),to->GetName(),info_name);
if (strcmp("TClonesArray",kl->GetName())) continue;
TClonesArray *tcl = ((TClonesArray*)to);
printf(" Sizes = %d %d\n",tcl->GetLast()+1,tcl->Capacity());
tcl->ls("");
}
delete [] ptr;
delete [] idx;
}