+//___________________________________________________
+Bool_t AliAnalysisTaskHFE::CheckTRDTriggerESD(AliESDEvent *ev) {
+//
+// Check TRD trigger; pPb settings
+//
+ Bool_t cint8=kFALSE;
+ Bool_t cint7=kFALSE;
+ Bool_t cint5=kFALSE;
+ Bool_t cint8s=kFALSE;
+ Bool_t cint7s=kFALSE;
+ Bool_t cint7ppb=kFALSE;
+ Bool_t trdtrgevent=kFALSE;
+
+ // printf("TRIGGERS %s \n",ev->GetFiredTriggerClasses().Data());
+
+ fTRDTriggerAnalysismb->CalcTriggers(ev);
+
+ // mb selection of WU events
+ if(fWhichTRDTrigger==1)
+ {
+// if(ev->IsTriggerClassFired("CINT7WU-B-NOPF-ALL"))
+ if((ev->IsTriggerClassFired("CINT7WU-B-NOPF-ALL"))||(ev->IsTriggerClassFired("CINT7WU-S-NOPF-ALL"))||(ev->IsTriggerClassFired("CINT8WU-S-NOPF-ALL")))
+ {
+ DrawTRDTrigger(ev);
+ DrawTRDTriggerAnalysis(ev);
+ return kTRUE;
+ }
+ else return kFALSE;
+ }
+
+
+ // HSE no cleanup
+ if(fWhichTRDTrigger==2)
+ {
+ cint8= ev->IsTriggerClassFired("CINT8WUHSE-B-NOPF-CENT");
+ cint7= ev->IsTriggerClassFired("CINT7WUHSE-B-NOPF-CENT"); // pPb rare
+ cint7ppb= ev->IsTriggerClassFired("CINT7WUHSE-B-NOPF-ALL"); // pPb mb
+ cint8s= ev->IsTriggerClassFired("CINT7WUHSE-S-NOPF-CENT");
+ cint7s= ev->IsTriggerClassFired("CINT8WUHSE-S-NOPF-CENT");
+ cint5= (ev->IsTriggerClassFired("CINT5WU-B-NOPF-ALL")) &&
+ (ev->GetHeader()->GetL1TriggerInputs() & (1 << 10));
+// printf("hse trigger %i %i %i %i %i \n",cint7,cint7ppb,cint8,cint7s,cint8s);
+ if((cint7==kFALSE)&&(cint7ppb==kFALSE)&&(cint8==kFALSE)&&(cint7s==kFALSE)&&(cint8s==kFALSE)&&(cint5==kFALSE)) return kFALSE;
+ else
+ {
+ DrawTRDTrigger(ev);
+ DrawTRDTriggerAnalysis(ev);
+ return kTRUE;
+ }
+ }
+
+
+
+ //HQU no cleanup
+ if(fWhichTRDTrigger==3)
+ {
+ cint8= ev->IsTriggerClassFired("CINT8WUHQU-B-NOPF-CENT");
+ cint7= ev->IsTriggerClassFired("CINT7WUHQU-B-NOPF-CENT"); // pPb rare
+ cint7ppb= ev->IsTriggerClassFired("CINT7WUHQU-B-NOPF-ALL"); // pPb mb
+ cint8s= ev->IsTriggerClassFired("CINT7WUHQU-S-NOPF-CENT");
+ cint7s= ev->IsTriggerClassFired("CINT8WUHQU-S-NOPF-CENT");
+ cint5= (ev->IsTriggerClassFired("CINT5WU-B-NOPF-ALL")) &&
+ (ev->GetHeader()->GetL1TriggerInputs() & (1 << 12));
+ // printf("hqu trigger %i %i %i %i %i \n",cint7,cint7ppb,cint8,cint7s,cint8s);
+ if((cint7==kFALSE)&&(cint7ppb==kFALSE)&&(cint8==kFALSE)&&(cint7s==kFALSE)&&(cint8s==kFALSE)&&(cint5==kFALSE)) return kFALSE;
+ else
+ {
+ DrawTRDTrigger(ev);
+ DrawTRDTriggerAnalysis(ev);
+ return kTRUE;
+ }
+ }
+
+ if(fWhichTRDTrigger==4)
+ {
+// printf("trigger %i %i \n", ev->GetHeader()->IsTriggerInputFired("1HSE"),(ev->GetHeader()->GetL1TriggerInputs() & (1 << 10))); // bug in IsTriggerInputFired; reported in savannah
+
+// if(ev->IsTriggerClassFired("CINT7WU-B-NOPF-ALL"))
+// {
+// Int_t trginput=0;
+// trginput=ev->GetHeader()->GetL1TriggerInputs() & (1 << 10); // HSE
+ // if(trginput==1024)
+// if(fTRDTriggerAnalysismb->CheckCondition(AliTRDTriggerAnalysis::kHSE))
+// if(fTRDTriggerAnalysismb->HasFired(AliTRDTriggerAnalysis::kHSE))
+ if(fTRDTriggerAnalysismb->HasTriggered(AliTRDTriggerAnalysis::kHSE))
+ {
+ DrawTRDTrigger(ev);
+ DrawTRDTriggerAnalysis(ev);
+ return kTRUE;
+ } else return kFALSE;
+ }// else return kFALSE;
+// }
+ if(fWhichTRDTrigger==5)
+ {
+// printf("trigger %i %i \n", ev->GetHeader()->IsTriggerInputFired("1HQU"),(ev->GetHeader()->GetL1TriggerInputs() & (1 << 12))); // bug in IsTriggerInputFired; reported in savannah
+// if(ev->IsTriggerClassFired("CINT7WU-B-NOPF-ALL"))
+// {
+
+// Int_t trginput=0;
+// trginput=ev->GetHeader()->GetL1TriggerInputs() & (1 << 12); //HQU
+ // printf("triggerinput %i \n",trginput);
+ // if(trginput==4096)
+// if(fTRDTriggerAnalysismb->CheckCondition(AliTRDTriggerAnalysis::kHQU))
+// if(fTRDTriggerAnalysismb->HasFired(AliTRDTriggerAnalysis::kHQU))
+ if(fTRDTriggerAnalysismb->HasTriggered(AliTRDTriggerAnalysis::kHQU))
+ {
+ DrawTRDTrigger(ev);
+ DrawTRDTriggerAnalysis(ev);
+ return kTRUE;
+ } else return kFALSE;
+ } //else return kFALSE;
+// }
+
+
+ return trdtrgevent;
+
+}
+
+
+//___________________________________________________
+Bool_t AliAnalysisTaskHFE::CheckTRDTrigger(AliVEvent *ev) {
+//
+// Check TRD trigger; pPb settings
+//
+
+ fTRDTriggerAnalysistrg->CalcTriggers(ev);
+
+ // HSE cleanup
+ if(fWhichTRDTrigger==6)
+ {
+ if(!fTRDTriggerAnalysistrg->HasTriggeredConfirmed(AliTRDTriggerAnalysis::kHSE))
+ {
+ return kFALSE;
+ }
+ else
+ {
+ // DrawTRDTrigger(ev);
+ DrawTRDTriggerAnalysis(ev);
+ return kTRUE;
+ }
+ }
+
+
+
+ // HQU cleanup
+ if(fWhichTRDTrigger==7)
+ {
+
+ if(!fTRDTriggerAnalysistrg->HasTriggeredConfirmed(AliTRDTriggerAnalysis::kHQU))
+ {
+ return kFALSE;
+ }
+ else
+ {
+ // DrawTRDTrigger(ev);
+ DrawTRDTriggerAnalysis(ev);
+ return kTRUE;
+ }
+ }
+
+ // HSE or HQU cleanup
+ if(fWhichTRDTrigger==8)
+ {
+ if((fTRDTriggerAnalysistrg->HasTriggeredConfirmed(AliTRDTriggerAnalysis::kHSE))||(fTRDTriggerAnalysistrg->HasTriggeredConfirmed(AliTRDTriggerAnalysis::kHQU)))
+ {
+ // DrawTRDTrigger(ev);
+ DrawTRDTriggerAnalysis(ev);
+ return kTRUE;
+ }
+ else
+ {
+ return kFALSE;
+ }
+ }
+
+ return kFALSE;
+
+}
+
+//___________________________________________________
+void AliAnalysisTaskHFE::DrawTRDTrigger(AliESDEvent *ev) {
+
+ Int_t ntriggerbit=0;
+ fQACollection->Fill("nTriggerBit",ntriggerbit);
+ if(ev->IsTriggerClassFired("CINT7-B-NOPF-ALLNOTRD"))
+ {
+ ntriggerbit=2;
+ fQACollection->Fill("nTriggerBit",ntriggerbit);
+ }
+ if(ev->IsTriggerClassFired("CINT7WU-B-NOPF-ALL"))
+ {
+ ntriggerbit=3;
+ fQACollection->Fill("nTriggerBit",ntriggerbit);
+ if(ev->IsTriggerClassFired("CINT7WUHSE-B-NOPF-CENT")) {
+ ntriggerbit=18;
+ fQACollection->Fill("nTriggerBit",ntriggerbit);
+ }
+ if(ev->IsTriggerClassFired("CINT7WUHQU-B-NOPF-CENT")) {
+ ntriggerbit=19;
+ fQACollection->Fill("nTriggerBit",ntriggerbit);
+ }
+ }
+ if(ev->IsTriggerClassFired("CINT7WUHJT-B-NOPF-CENT"))
+ {
+ ntriggerbit=4;
+ fQACollection->Fill("nTriggerBit",ntriggerbit);
+
+ if(ev->IsTriggerClassFired("CINT7WUHSE-B-NOPF-CENT")) {
+ ntriggerbit=13;
+ fQACollection->Fill("nTriggerBit",ntriggerbit);
+ }
+ if(ev->IsTriggerClassFired("CINT7WUHQU-B-NOPF-CENT")) {
+ ntriggerbit=14;
+ fQACollection->Fill("nTriggerBit",ntriggerbit);
+ if(ev->IsTriggerClassFired("CINT7WUHSE-B-NOPF-CENT")) {
+ ntriggerbit=17;
+ fQACollection->Fill("nTriggerBit",ntriggerbit);
+ }
+ }
+ }
+ if(ev->IsTriggerClassFired("CINT7WUHQU-B-NOPF-CENT"))
+ {
+ ntriggerbit=5;
+ fQACollection->Fill("nTriggerBit",ntriggerbit);
+ if(ev->IsTriggerClassFired("CINT7WUHSE-B-NOPF-CENT")) {
+ ntriggerbit=11;
+ fQACollection->Fill("nTriggerBit",ntriggerbit);
+ }
+ if((!(ev->IsTriggerClassFired("CINT7WUHSE-B-NOPF-CENT")))&&(!(ev->IsTriggerClassFired("CINT7WUHJT-B-NOPF-CENT")))) {
+ ntriggerbit=21;
+ fQACollection->Fill("nTriggerBit",ntriggerbit);
+
+ /*
+ Int_t nTrdTracks = ev->GetNumberOfTrdTracks();
+ for (Int_t iTrack = 0; iTrack < nTrdTracks; ++iTrack) {
+ AliESDTrdTrack* trdTrack = ev->GetTrdTrack(iTrack);
+ printf("GTU track %3i: pt = %5.1f, PID = %3i\n", iTrack, trdTrack->Pt(), trdTrack->GetPID());
+ }*/
+
+
+ }
+
+ }
+ if(ev->IsTriggerClassFired("CINT7WUHSE-B-NOPF-CENT"))
+ {
+ ntriggerbit=6;
+ fQACollection->Fill("nTriggerBit",ntriggerbit);
+ if(ev->IsTriggerClassFired("CINT7WUHQU-B-NOPF-CENT")) {
+ ntriggerbit=12;
+ fQACollection->Fill("nTriggerBit",ntriggerbit);
+ }
+ if(ev->IsTriggerClassFired("CINT7WUHSE-B-NOPF-FAST")){
+ ntriggerbit=15;
+ fQACollection->Fill("nTriggerBit",ntriggerbit);
+
+ if((!(ev->IsTriggerClassFired("CINT7WUHQU-B-NOPF-CENT")))&&(!(ev->IsTriggerClassFired("CINT7WUHJT-B-NOPF-CENT")))) {
+ ntriggerbit=20;
+ fQACollection->Fill("nTriggerBit",ntriggerbit);
+ /*
+ Int_t nTrdTracks = ev->GetNumberOfTrdTracks();
+ for (Int_t iTrack = 0; iTrack < nTrdTracks; ++iTrack) {
+ AliESDTrdTrack* trdTrack = ev->GetTrdTrack(iTrack);
+ printf("HSE GTU track %3i: pt = %5.1f, PID = %3i\n", iTrack, trdTrack->Pt(), trdTrack->GetPID());
+ } */
+
+ }
+
+ }
+
+ }
+ if(ev->IsTriggerClassFired("CEMC7WUHEE-B-NOPF-CENT")) {
+ ntriggerbit=7;
+ fQACollection->Fill("nTriggerBit",ntriggerbit);
+ }
+ if(ev->IsTriggerClassFired("CINT7WUHJT-B-NOPF-FAST")){
+ ntriggerbit=8;
+ fQACollection->Fill("nTriggerBit",ntriggerbit);
+ }
+ if(ev->IsTriggerClassFired("CINT7WUHQU-B-NOPF-FAST")){
+ ntriggerbit=9;
+ fQACollection->Fill("nTriggerBit",ntriggerbit);
+ }
+ if(ev->IsTriggerClassFired("CINT7WUHSE-B-NOPF-FAST")){
+ ntriggerbit=10;
+ fQACollection->Fill("nTriggerBit",ntriggerbit);
+ if(ev->IsTriggerClassFired("CINT7WUHSE-B-NOPF-CENT")) {
+ ntriggerbit=16;
+ fQACollection->Fill("nTriggerBit",ntriggerbit);
+ }
+ }
+ if(ntriggerbit==0) fQACollection->Fill("nTriggerBit",1);
+
+}
+
+
+//___________________________________________________
+void AliAnalysisTaskHFE::DrawTRDTriggerAnalysis(AliVEvent *ev) {
+
+ fTRDTriggerAnalysistrg->CalcTriggers(ev);
+ for(Int_t itrg=0;itrg<AliTRDTriggerAnalysis::kHlast;itrg++)
+ {
+ Int_t trdtrgstatus=0;
+ if(fTRDTriggerAnalysistrg->CheckCondition((AliTRDTriggerAnalysis::TRDTrigger_t) itrg))trdtrgstatus=1;
+ if(fTRDTriggerAnalysistrg->HasFired((AliTRDTriggerAnalysis::TRDTrigger_t) itrg))trdtrgstatus=2;
+ if(fTRDTriggerAnalysistrg->HasTriggered((AliTRDTriggerAnalysis::TRDTrigger_t) itrg))trdtrgstatus=3;
+ if(fTRDTriggerAnalysistrg->HasTriggeredConfirmed((AliTRDTriggerAnalysis::TRDTrigger_t) itrg))trdtrgstatus=4;
+ fQACollection->Fill("TriggerAnalysis",(Float_t)itrg,(Float_t)trdtrgstatus);
+ }
+}
+
+//___________________________________________________
+Bool_t AliAnalysisTaskHFE::IsMCFakeTrack(const AliVTrack *const trk) const {
+ //
+ // Check whether track is MC Fake track using the sign of the track label
+ //
+ return trk->GetLabel() < 0;
+}