KVUniqueNameList* KVDMS::GetFullListing(const Char_t* directory) { // Create and fill TList with info (name, size, modification date) // on all files & containers in current directory // (default) or in given directory. // TList is filled with DMSFile_t objects which belong to the list, list must be deleted after use. longlist(directory); if (fout == "") { Error("GetListing", "Unknown directory %s", directory); return 0; } TObjArray* toks = fout.Tokenize("\n"); KVUniqueNameList* list = new KVUniqueNameList(kTRUE); list->SetOwner(kTRUE); list->SetName(((TObjString*)(*toks)[0])->String().Remove(TString::kBoth, ' ').Data()); for (int i = 1; i < toks->GetEntries(); i++) { TString tmp = ((TObjString*)(*toks)[i])->String().Remove(TString::kBoth, ' '); DMSFile_t* f = new DMSFile_t; if (IsContainer(tmp)) { // container f->SetName(gSystem->BaseName(tmp.Data())); f->SetIsContainer(); } else { ExtractFileInfos(tmp, f); } list->Add(f); } delete toks; return list; }
void KVINDRAReconEvent::IdentifyEvent() { // Performs event identification (see KVReconstructedEvent::IdentifyEvent), and then // particles stopping in first member of a telescope (GetStatus() == KVReconstructedNucleus::kStatusStopFirstStage) are // labelled with VEDA ID code kIDCode5 (Zmin) // // When CsI identification gives a gamma, we unset the 'analysed' state of all detectors // in front of the CsI and reanalyse the group in order to reconstruct and identify charged particles // stopping in them. // // Unidentified particles receive the general ID code for non-identified particles (kIDCode14) KVReconstructedEvent::IdentifyEvent(); KVINDRAReconNuc *d=0; int mult = GetMult(); KVUniqueNameList gammaGroups;//list of groups with gammas identified in CsI ResetGetNextParticle(); while((d = GetNextParticle())){ if (d->IsIdentified()&&d->GetStatus() == KVReconstructedNucleus::kStatusStopFirstStage) { d->SetIDCode( kIDCode5 ); // Zmin } else if (d->IsIdentified()&&d->GetCodes().TestIDCode(kIDCode0)){ // gamma identified in CsI // reset analysed state of all detectors in front of CsI if(d->GetCsI()){ if(d->GetCsI()->GetAlignedDetectors()){ TIter next(d->GetCsI()->GetAlignedDetectors()); KVDetector*det=(KVDetector*)next();//first detector = CsI while( (det = (KVDetector*)next()) ) det->SetAnalysed(kFALSE); gammaGroups.Add(d->GetGroup()); } else { Error("IdentifyEvent", "particule id gamma, no aligned detectors???"); d->Print(); } } else { Error("IdentifyEvent", "particule identified as gamma, has no CsI!!"); d->Print(); } } } // perform secondary reconstruction in groups with detected gammas int ngamG = gammaGroups.GetEntries(); if(ngamG){ for(int i=0; i<ngamG; i++){ gIndra->AnalyseGroupAndReconstructEvent(this, (KVGroup*)gammaGroups.At(i)); } } if(GetMult()>mult) { /*Info("IdentifyEvent", "Event#%d: Secondary reconstruction (gammas) -> %d new particles", GetNumber(), GetMult()-mult);*/ // identify new particles generated in secondary reconstruction KVReconstructedEvent::IdentifyEvent(); ResetGetNextParticle(); while((d = GetNextParticle())){ if (d->IsIdentified()&&d->GetStatus() == KVReconstructedNucleus::kStatusStopFirstStage) { d->SetIDCode( kIDCode5 ); // Zmin } else if(!d->IsIdentified()){ d->SetIDCode( kIDCode14 ); } } /* for(int i=mult+1; i<=GetMult(); i++){ d = GetParticle(i); if(d->IsIdentified()) printf("\t%2d: Ring %2d Module %2d Z=%2d A=%3d code=%d\n",i,d->GetRingNumber(), d->GetModuleNumber(),d->GetZ(),d->GetA(),d->GetCodes().GetVedaIDCode()); else printf("\t%2d: Ring %2d Module %2d UNIDENTIFIED status=%d\n", i,d->GetRingNumber(), d->GetModuleNumber(), d->GetStatus()); } */ } }