fClusterRatioTPC(0.),
fMinTrackletsTRD(0),
fPixelITS(0),
- fQAlist(0x0)
+ fQAlist(0x0),
+ fDebugLevel(0)
{
//
// Default Constructor
fClusterRatioTPC(c.fClusterRatioTPC),
fMinTrackletsTRD(c.fMinTrackletsTRD),
fPixelITS(c.fPixelITS),
- fQAlist(0x0)
+ fQAlist(0x0),
+ fDebugLevel(c.fDebugLevel)
{
//
// Copy constructor
fClusterRatioTPC = c.fClusterRatioTPC;
fMinTrackletsTRD = c.fMinTrackletsTRD;
fPixelITS = c.fPixelITS;
+ fDebugLevel = c.fDebugLevel;
memcpy(fImpactParamCut, c.fImpactParamCut, sizeof(Float_t) * 4);
if(IsQAOn()){
trdTracklets = track->GetTRDpidQuality();
#endif
UChar_t itsPixel = track->GetITSClusterMap();
+ Int_t det, status1, status2;
+ Float_t xloc, zloc;
+ track->GetITSModuleIndexInfo(0, det, status1, xloc, zloc);
+ track->GetITSModuleIndexInfo(1, det, status2, xloc, zloc);
if(TESTBIT(fRequirements, kMinImpactParamR)){
// cut on min. Impact Parameter in Radial direction
if(impact_r >= fImpactParamCut[0]) SETBIT(survivedCut, kMinImpactParamR);
}
if(TESTBIT(fRequirements, kPixelITS)){
// cut on ITS pixel layers
- if(fPixelITS == kFirst)
+ if(fDebugLevel > 0){
+ printf("ITS cluster Map: ");
+ PrintBitMap(itsPixel);
+ }
switch(fPixelITS){
- case kFirst: if(itsPixel & BIT(0)) SETBIT(survivedCut, kPixelITS);
- break;
- case kSecond: if(itsPixel & BIT(1)) SETBIT(survivedCut, kPixelITS);
- break;
- case kBoth: if((itsPixel & BIT(0)) && (itsPixel & BIT(1))) SETBIT(survivedCut, kPixelITS);
- break;
- case kAny: if((itsPixel & BIT(0)) || (itsPixel & BIT(1))) SETBIT(survivedCut, kPixelITS);
- break;
+ case kFirst:
+ if(itsPixel & BIT(0))
+ SETBIT(survivedCut, kPixelITS);
+ else if(!CheckITSstatus(status1))
+ SETBIT(survivedCut, kPixelITS);
+ break;
+ case kSecond:
+ if(itsPixel & BIT(1))
+ SETBIT(survivedCut, kPixelITS);
+ else if(!CheckITSstatus(status2))
+ SETBIT(survivedCut, kPixelITS);
+ break;
+ case kBoth:
+ if((itsPixel & BIT(0)) && (itsPixel & BIT(1)))
+ SETBIT(survivedCut, kPixelITS);
+ else if(!CheckITSstatus(status1) && !CheckITSstatus(status2))
+ SETBIT(survivedCut, kPixelITS);
+ break;
+ case kAny:
+ if((itsPixel & BIT(0)) || (itsPixel & BIT(1)))
+ SETBIT(survivedCut, kPixelITS);
+ else if(!CheckITSstatus(status1) || !CheckITSstatus(status2))
+ SETBIT(survivedCut, kPixelITS);
+ break;
default: break;
}
+ if(fDebugLevel > 0)printf("Survived Cut: %s\n", TESTBIT(survivedCut, kPixelITS) ? "YES" : "NO");
}
if(fRequirements == survivedCut){
//
}
qaList->AddLast(fQAlist);
}
+
+//______________________________________________________
+void AliHFEextraCuts::PrintBitMap(Int_t bitmap){
+ for(Int_t ibit = 32; ibit--; )
+ printf("%d", bitmap & BIT(ibit) ? 1 : 0);
+ printf("\n");
+}
+
+//______________________________________________________
+Bool_t AliHFEextraCuts::CheckITSstatus(Int_t itsStatus){
+ //
+ // Check whether ITS area is dead
+ //
+ Bool_t status;
+ switch(itsStatus){
+ case 2: status = kFALSE; break;
+ case 3: status = kFALSE; break;
+ case 7: status = kFALSE; break;
+ default: status = kTRUE;
+ }
+ return status;
+}