Bool_t oldStatus = TH1::AddDirectoryStatus();
TH1::AddDirectory(kFALSE);
- TH2F * h1 = new TH2F(GetClusterVsTrackletsHistoName(trigger_name),trigger_name, 50, -0.5, 49.5, 1000, -0.5, 999.5);
+ TH2F * h1 = new TH2F(GetClusterVsTrackletsHistoName(trigger_name),trigger_name, 300, -0.5, 2999.5, 1000, -0.5, 9999.5);
h1->SetXTitle("Tracklets");
h1->SetYTitle("SPD Clusters");
AliInfo(Form("Creating histos: %s, all and accepted", GetClusterVsTrackletsHistoName(trigger_name)));
TH2F * h2 = new TH2F(GetClusterVsTrackletsHistoNameAccepted(trigger_name),TString(trigger_name)+ "(accepted)",
- 50, -0.5, 49.5, 1000, -0.5, 999.5);
+ 300, -0.5, 2999.5, 1000, -0.5, 9999.5);
h2->SetXTitle("Tracklets");
h2->SetYTitle("SPD Clusters");
fHistV0A(0),
fHistV0C(0),
fHistZDC(0),
+ fHistTDCZDC(0),
fHistFMDA(0),
fHistFMDC(0),
fHistFMDSingle(0),
delete fHistZDC;
fHistZDC = 0;
}
+ if (fHistTDCZDC)
+ {
+ delete fHistZDC;
+ fHistZDC = 0;
+ }
if (fHistFMDA)
{
fHistV0A = new TH1F("fHistV0A", "V0A;leading time (ns);events", 400, -100, 100);
fHistV0C = new TH1F("fHistV0C", "V0C;leading time (ns);events", 400, -100, 100);
fHistZDC = new TH1F("fHistZDC", "ZDC;trigger bits;events", 8, -1.5, 6.5);
+ fHistTDCZDC = new TH1F("fHistTDCZDC", "ZDC;TDC bits;events", 32, -0.5, 32-0.5);
// TODO check limits
fHistFMDA = new TH1F("fHistFMDA", "FMDA;combinations above threshold;events", 102, -1.5, 100.5);
V0Trigger(aEsd, kASide, kFALSE, kTRUE);
V0Trigger(aEsd, kCSide, kFALSE, kTRUE);
-
+ ZDCTDCTrigger(aEsd,kASide,kFALSE,kFALSE,kTRUE);
+
+
AliESDZDC* zdcData = aEsd->GetESDZDC();
if (zdcData)
{
return 1./(p1*p1*TMath::Power(adc,2.*(p2-1.))+p3*p3);
}
+
+Bool_t AliTriggerAnalysis::ZDCTDCTrigger(const AliESDEvent* aEsd, AliceSide side, Bool_t useZN, Bool_t useZP, Bool_t fillHists) const
+{
+ // Returns if ZDC triggered, based on TDC information
+
+ AliESDZDC *esdZDC = aEsd->GetESDZDC();
+
+ Bool_t tdc[32] = {kFALSE};
+ for(Int_t itdc=0; itdc<32; itdc++){
+ for(Int_t i=0; i<4; i++){
+ if (0.025*esdZDC->GetZDCTDCData(itdc, i) != 0){
+ tdc[itdc] = kTRUE;
+ }
+ }
+ if(fillHists && tdc[itdc]) {
+ fHistTDCZDC->Fill(itdc);
+ }
+ }
+ Bool_t zdcNA = tdc[12];
+ Bool_t zdcNC = tdc[10];
+ Bool_t zdcPA = tdc[13];
+ Bool_t zdcPC = tdc[11];
+
+
+ if (side == kASide) return ((useZP&&zdcPA) || (useZN&&zdcNA));
+ if (side == kCSide) return ((useZP&&zdcPC) || (useZN&&zdcNC));
+ return kFALSE;
+}
+
Bool_t AliTriggerAnalysis::ZDCTrigger(const AliESDEvent* aEsd, AliceSide side) const
{
// Returns if ZDC triggered
TObject* obj;
// collections of all histograms
- const Int_t nHists = 9;
+ const Int_t nHists = 10;
TList collections[nHists];
Int_t count = 0;
collections[n++].Add(entry->fHistV0A);
collections[n++].Add(entry->fHistV0C);
collections[n++].Add(entry->fHistZDC);
+ collections[n++].Add(entry->fHistTDCZDC);
collections[n++].Add(entry->fHistFMDA);
collections[n++].Add(entry->fHistFMDC);
collections[n++].Add(entry->fHistFMDSingle);
fHistV0A->Merge(&collections[n++]);
fHistV0C->Merge(&collections[n++]);
fHistZDC->Merge(&collections[n++]);
+ fHistTDCZDC->Merge(&collections[n++]);
fHistFMDA->Merge(&collections[n++]);
fHistFMDC->Merge(&collections[n++]);
fHistFMDSingle->Merge(&collections[n++]);
fHistV0A->Write();
fHistV0C->Write();
fHistZDC->Write();
+ fHistTDCZDC->Write();
fHistFMDA->Write();
fHistFMDC->Write();
fHistFMDSingle->Write();
Int_t SPDFiredChips(const AliESDEvent* aEsd, Int_t origin, Bool_t fillHists = kFALSE, Int_t layer = 0);
Bool_t SPDGFOTrigger(const AliESDEvent* aEsd, Int_t origin);
V0Decision V0Trigger(const AliESDEvent* aEsd, AliceSide side, Bool_t online, Bool_t fillHists = kFALSE);
- Bool_t ZDCTrigger(const AliESDEvent* aEsd, AliceSide side) const;
+ Bool_t ZDCTrigger (const AliESDEvent* aEsd, AliceSide side) const;
+ Bool_t ZDCTDCTrigger(const AliESDEvent* aEsd, AliceSide side, Bool_t useZN=kTRUE, Bool_t useZP=kFALSE, Bool_t fillHists=kFALSE) const;
Bool_t FMDTrigger(const AliESDEvent* aEsd, AliceSide side);
Int_t SSDClusters(const AliESDEvent* aEsd);
static const char* GetTriggerName(Trigger trigger);
TH1F* fHistFiredBitsSPD; // fired hardware bits
TH1F* fHistV0A; // histograms that histogram the criterion the cut is applied on: bb triggers
TH1F* fHistV0C; // histograms that histogram the criterion the cut is applied on: bb triggers
- TH1F* fHistZDC; // histograms that histogram the criterion the cut is applied on: fired bits (6 bins)
+ TH1F* fHistZDC; //histograms that histogram the criterion the cut is applied on: fired bits (6 bins)
+ TH1F* fHistTDCZDC; // histograms that histogram the criterion the cut is applied on: TDC bits (32 bins)
TH1F* fHistFMDA; // histograms that histogram the criterion the cut is applied on: number of hit combination above threshold
TH1F* fHistFMDC; // histograms that histogram the criterion the cut is applied on: number of hit combination above threshold
TH1F* fHistFMDSingle; // histograms that histogram the criterion the cut is applied on: single mult value (more than one entry per event)