fMagF(0), //! current magnetic field
fTriggerMaskReject(-1), //trigger mask - reject trigger
fTriggerMaskAccept(-1), //trigger mask - accept trigger
+ fHasLaser(kFALSE), //flag the laser is overlayed with given event
+ fRejectLaser(kTRUE), //flag- reject laser
+ fTriggerClass(),
fDebugLevel(0)
{
//
//
}
+AliTPCcalibBase::AliTPCcalibBase(const char * name, const char * title):
+ TNamed(name,title),
+ fDebugStreamer(0),
+ fStreamLevel(0),
+ fRun(0), //! current Run number
+ fEvent(0), //! current Event number
+ fTime(0), //! current Time
+ fTrigger(0), //! current trigger type
+ fMagF(0), //! current magnetic field
+ fTriggerMaskReject(-1), //trigger mask - reject trigger
+ fTriggerMaskAccept(-1), //trigger mask - accept trigger
+ fHasLaser(kFALSE), //flag the laser is overlayed with given event
+ fRejectLaser(kTRUE), //flag- reject laser
+ fTriggerClass(),
+ fDebugLevel(0)
+{
+ //
+ // Constructor
+ //
+}
+
AliTPCcalibBase::AliTPCcalibBase(const AliTPCcalibBase&calib):
TNamed(calib),
fDebugStreamer(0),
fMagF(0), //! current magnetic field
fTriggerMaskReject(calib.fTriggerMaskReject), //trigger mask - reject trigger
fTriggerMaskAccept(calib.fTriggerMaskAccept), //trigger mask - accept trigger
+ fHasLaser(calib.fHasLaser), //flag the laser is overlayed with given event
+ fRejectLaser(calib.fRejectLaser), //flag- reject laser
+ fTriggerClass(calib.fTriggerClass),
fDebugLevel(calib.fDebugLevel)
{
//
fTime = event->GetTimeStamp();
fTrigger = event->GetTriggerMask();
fMagF = event->GetMagneticField();
+ fTriggerClass = event->GetFiredTriggerClasses().Data();
+ fHasLaser = HasLaser(event);
+
+}
+
+
+Bool_t AliTPCcalibBase::HasLaser(AliESDEvent *event){
+ //
+ //
+ //
+ // Thresholds more than 8 tracks with small dip angle
+
+ const Int_t kMinLaserTracks = 8;
+ const Float_t kThrLaser = 0.3;
+ const Float_t kLaserTgl = 0.01;
+
+ Int_t ntracks = event->GetNumberOfTracks();
+ if (ntracks<kMinLaserTracks) return kFALSE;
+ Float_t nlaser=0;
+ Float_t nall=0;
+ for (Int_t i=0;i<ntracks;++i) {
+ AliESDtrack *track=event->GetTrack(i);
+ if (!track) continue;
+ if (track->GetTPCNcls()<=0) continue;
+ nall++;
+ if (TMath::Abs(track->GetTgl())<kLaserTgl) nlaser++;
+ }
+ if (nlaser>kMinLaserTracks) return kTRUE;
+ if (nall>0 && nlaser/nall>kThrLaser) return kTRUE;
+ return kFALSE;
}
+
+
Bool_t AliTPCcalibBase::AcceptTrigger(){
//
// Apply trigger mask - Don't do calibration for non proper triggers
//
- if (fTriggerMaskReject==fTrigger) return kFALSE;
- if (fTriggerMaskAccept>0 && fTriggerMaskAccept!=fTrigger) return kFALSE;
+ if (fTriggerMaskReject==(Int_t)fTrigger) return kFALSE;
+ if (fTriggerMaskAccept>0 && fTriggerMaskAccept!=(Int_t)fTrigger) return kFALSE;
+ if (fHasLaser && fRejectLaser) return kFALSE;
return kTRUE;
}