Bool_t KVIDHarpeeSiCsI_e503::Identify(KVIdentificationResult* idr, Double_t x, Double_t y) { assert(idr); if (!kInitialised_) Init(); if (x < 0.) x = GetIDMapX(); if (y < 0.) y = GetIDMapY(); if (x == 0.) return kFALSE; if (y == 0.) return kFALSE; idr->IDOK = kFALSE; idr->IDattempted = kTRUE; // Base class performs the preliminary identification routine. We do this // after the initialisation check as we require base_id_result_. assert(base_id_result_); #if __cplusplus < 201103L KVIDHarpeeSiCsI::Identify(base_id_result_, x, y); #else KVIDHarpeeSiCsI::Identify(base_id_result_.get(), x, y); #endif // Set the idcode and type for this telescope idr->IDcode = fIDCode; idr->SetIDType(GetType()); if (!base_id_result_->Zident) { idr->IDquality = kBaseIdentZFailed; return kFALSE; } idr->Z = base_id_result_->Z; idr->PID = base_id_result_->PID; assert((idr->Z > 0) && (idr->Z < 120)); assert(idr->PID > 0.); // At this point Z should be well identified by the base class minimiser_->SetIDTelescope(GetName()); idr->A = minimiser_->Minimise(idr->Z, y, x); if (idr->A > 0) { idr->Zident = kTRUE; idr->Aident = kTRUE; idr->IDOK = kTRUE; idr->IDquality = kIdentified; return kTRUE; } return kFALSE; }
Bool_t KVIDSiLiCsI_camp5::Identify(KVIdentificationResult* IDR, Double_t x, Double_t y) { //Particle identification and code setting using identification grids. //perform identification in SiLi(GG) - CsI(R) map IDR->SetIDType(GetType()); IDR->IDattempted = kTRUE; Double_t sili = (y < 0. ? GetIDMapY("GG") : y); Double_t csir = (x < 0. ? GetIDMapX() : x); KVIDGrid* theIdentifyingGrid = 0; fGGgrid->Identify(csir, sili, IDR); theIdentifyingGrid = (KVIDGrid*)fGGgrid; if (fGGgrid->GetQualityCode() > KVIDZAGrid::kICODE6 && fPGgrid) { //we have to try PG grid (if there is one) // try Z & A identification in SiLi(PG)-CsI(R) map sili = (y < 0. ? GetIDMapY("PG") : y); fPGgrid->Identify(csir, sili, IDR); theIdentifyingGrid = (KVIDGrid*)fPGgrid; } if (theIdentifyingGrid->GetQualityCode() == KVIDZAGrid::kICODE8) { // only if the final quality code is kICODE8 do we consider that it is // worthwhile looking elsewhere. In all other cases, the particle has been // "identified", even if we still don't know its Z and/or A (in this case // we consider that we have established that they are unknowable). return kFALSE; } if (theIdentifyingGrid->GetQualityCode() == KVIDZAGrid::kICODE7) { // if the final quality code is kICODE7 (above last line in grid) then the estimated // Z is only a minimum value (Zmin) IDR->IDcode = kIDCode5; return kTRUE; } if (theIdentifyingGrid->GetQualityCode() > KVIDZAGrid::kICODE3 && theIdentifyingGrid->GetQualityCode() < KVIDZAGrid::kICODE7) { // if the final quality code is kICODE4, kICODE5 or kICODE6 then this "nucleus" // corresponds to a point which is inbetween the lines, i.e. noise IDR->IDcode = kIDCode10; return kTRUE; } // set general ID code SiLi-CsI IDR->IDcode = kIDCode3; return kTRUE; }
Bool_t KVIDChIoCorrCsI::Identify(KVIdentificationResult* idr, Double_t x, Double_t y) { idr->SetIDType(GetType()); idr->IDattempted = kTRUE; Double_t chIoCorr = (y<0. ? GetIDMapY() : y); Double_t csiLight = (x<0. ? GetIDMapX() : x); if(fGrid->IsIdentifiable(csiLight,chIoCorr)) fGrid->Identify(csiLight, chIoCorr, idr); if(fGrid->GetQualityCode() == KVIDZAGrid::kICODE8){ // only if the final quality code is kICODE8 do we consider that it is // worthwhile looking elsewhere. In all other cases, the particle has been // "identified", even if we still don't know its Z and/or A (in this case // we consider that we have established that they are unknowable). idr->IDcode = kIDCode15; return kFALSE; } if(fGrid->GetQualityCode() == KVIDZAGrid::kICODE7){ // if the final quality code is kICODE7 (above last line in grid) then the estimated // Z is only a minimum value (Zmin) idr->IDcode = kIDCode5; return kTRUE; } if(fGrid->GetQualityCode() > KVIDZAGrid::kICODE3 && fGrid->GetQualityCode() < KVIDZAGrid::kICODE7){ // if the final quality code is kICODE4, kICODE5 or kICODE6 then this "nucleus" // corresponds to a point which is inbetween the lines, i.e. noise idr->IDcode = kIDCode10; return kTRUE; } if(fGrid->GetQualityCode() == KVIDGChIoSi_e494s::k_BelowSeuilChIo){ idr->IDcode = kIDCode15; return kTRUE; } // set general ID code ChIo-CsI idr->IDcode = kIDCode4; return kTRUE; }
Bool_t KVIDCsI::Identify(KVIdentificationResult* IDR, Double_t x, Double_t y) { //Particle identification and code setting using identification grid KVIDGCsI* fGrid. IDR->SetIDType( GetType() ); IDR->IDattempted = kTRUE; //perform identification Double_t csir = (y<0. ? GetIDMapY() : y); Double_t csil = (x<0. ? GetIDMapX() : x); CsIGrid->Identify(csil, csir, IDR); // set general ID code IDR->IDcode = kIDCode2; // general ID code for gammas if (IDR->IDquality == KVIDGCsI::kICODE10) IDR->IDcode = kIDCode0; return kTRUE; }
Bool_t KVIDChIoCsI_camp5::Identify(KVIdentificationResult* idr, Double_t x, Double_t y) { //Particle identification and code setting using identification grids. //perform identification in ChIo(GG) - CsI(H) map idr->SetIDType(GetType()); idr->IDattempted = kTRUE; Double_t cigg = (y < 0. ? GetIDMapY("GG") : y); Double_t lumtot = (x < 0. ? GetIDMapX() : x); KVIDZAGrid* theIdentifyingGrid = 0; fGGgrid->Identify(lumtot, cigg, idr); theIdentifyingGrid = (KVIDZAGrid*)fGGgrid; if (idr->IDOK && idr->Z == theIdentifyingGrid->GetZmax() && TMath::Nint(GetIDMapY("GG")) == 4095) { //Gestion des saturations GG //on teste l identification PG if (fPGgrid) { Double_t cipg = (y < 0. ? GetIDMapY("PG") : y); fPGgrid->Identify(lumtot, cipg, idr); //on garde l identification PG si celle ci renvoie un code //de 0 a 4 ou 7 if (idr->Zident) { theIdentifyingGrid = (KVIDZAGrid*)fPGgrid; } } } if (theIdentifyingGrid == fGGgrid) { if (fGGgrid->GetQualityCode() > KVIDZAGrid::kICODE6 && fPGgrid) { //we have to try PG grid (if there is one) // try Z & A identification in ChIo(PG)-CsI(H) map Double_t cipg = (y < 0. ? GetIDMapY("PG") : y); fPGgrid->Identify(lumtot, cipg, idr); theIdentifyingGrid = (KVIDZAGrid*)fPGgrid; } } if (theIdentifyingGrid->GetQualityCode() == KVIDZAGrid::kICODE8) { // only if the final quality code is kICODE8 do we consider that it is // worthwhile looking elsewhere. In all other cases, the particle has been // "identified", even if we still don't know its Z and/or A (in this case // we consider that we have established that they are unknowable). return kFALSE; } if (theIdentifyingGrid->GetQualityCode() == KVIDZAGrid::kICODE7) { // if the final quality code is kICODE7 (above last line in grid) then the estimated // Z is only a minimum value (Zmin) idr->IDcode = kIDCode5; return kTRUE; } if (theIdentifyingGrid->GetQualityCode() > KVIDZAGrid::kICODE3 && theIdentifyingGrid->GetQualityCode() < KVIDZAGrid::kICODE7) { // if the final quality code is kICODE4, kICODE5 or kICODE6 then this "nucleus" // corresponds to a point which is inbetween the lines, i.e. noise idr->IDcode = kIDCode10; return kTRUE; } // set general ID code ChIo-CsI idr->IDcode = kIDCode4; return kTRUE; }