AliTriggerAnalysis
authormfloris <mfloris@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 11 Nov 2010 20:20:22 +0000 (20:20 +0000)
committermfloris <mfloris@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 11 Nov 2010 20:20:22 +0000 (20:20 +0000)
- Implemented ZDC trigger based on TDC
AliPhysicsSelection
- Using ZDCTDC as ZDC trigger
AliBackgroundSelection
- Increased the range of control histograms, to cope with heavy ions

ANALYSIS/AliBackgroundSelection.cxx
ANALYSIS/AliPhysicsSelection.cxx
ANALYSIS/AliTriggerAnalysis.cxx
ANALYSIS/AliTriggerAnalysis.h

index fc17688..aeafdc1 100644 (file)
@@ -228,13 +228,13 @@ void AliBackgroundSelection::BookClusterVsTrackletsHisto(const char * trigger_na
   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");
 
index 87a1836..53c5327 100644 (file)
@@ -371,8 +371,10 @@ UInt_t AliPhysicsSelection::IsCollisionCandidate(const AliESDEvent* aEsd)
       //Int_t ssdClusters = triggerAnalysis->SSDClusters(aEsd);
       
       // ZDC
-      Bool_t zdcA = triggerAnalysis->IsOfflineTriggerFired(aEsd, AliTriggerAnalysis::kZDCA);
-      Bool_t zdcC = triggerAnalysis->IsOfflineTriggerFired(aEsd, AliTriggerAnalysis::kZDCC);
+      // Bool_t zdcA = triggerAnalysis->IsOfflineTriggerFired(aEsd, AliTriggerAnalysis::kZDCA);
+      // Bool_t zdcC = triggerAnalysis->IsOfflineTriggerFired(aEsd, AliTriggerAnalysis::kZDCC);
+      Bool_t zdcA = triggerAnalysis->ZDCTDCTrigger(aEsd, AliTriggerAnalysis::kASide);
+      Bool_t zdcC = triggerAnalysis->ZDCTDCTrigger(aEsd, AliTriggerAnalysis::kCSide);
       
 
       // Some "macros"
index 7f1821c..53e1b1d 100644 (file)
@@ -62,6 +62,7 @@ AliTriggerAnalysis::AliTriggerAnalysis() :
   fHistV0A(0),       
   fHistV0C(0),
   fHistZDC(0),    
+  fHistTDCZDC(0),    
   fHistFMDA(0),    
   fHistFMDC(0),   
   fHistFMDSingle(0),
@@ -106,6 +107,11 @@ AliTriggerAnalysis::~AliTriggerAnalysis()
     delete fHistZDC;
     fHistZDC = 0;
   }
+  if (fHistTDCZDC)
+  {
+    delete fHistZDC;
+    fHistZDC = 0;
+  }
 
   if (fHistFMDA)
   {
@@ -157,6 +163,7 @@ void AliTriggerAnalysis::EnableHistograms()
   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);
@@ -577,7 +584,9 @@ void AliTriggerAnalysis::FillHistograms(const AliESDEvent* aEsd)
   
   V0Trigger(aEsd, kASide, kFALSE, kTRUE);
   V0Trigger(aEsd, kCSide, kFALSE, kTRUE);
-  
+  ZDCTDCTrigger(aEsd,kASide,kFALSE,kFALSE,kTRUE);
+
+
   AliESDZDC* zdcData = aEsd->GetESDZDC();
   if (zdcData)
   {
@@ -907,6 +916,35 @@ Float_t AliTriggerAnalysis::V0LeadingTimeWeight(Float_t adc) const
   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
@@ -1024,7 +1062,7 @@ Long64_t AliTriggerAnalysis::Merge(TCollection* list)
   TObject* obj;
 
   // collections of all histograms
-  const Int_t nHists = 9;
+  const Int_t nHists = 10;
   TList collections[nHists];
 
   Int_t count = 0;
@@ -1038,6 +1076,7 @@ Long64_t AliTriggerAnalysis::Merge(TCollection* list)
     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);
@@ -1073,6 +1112,7 @@ Long64_t AliTriggerAnalysis::Merge(TCollection* list)
   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++]);
@@ -1099,6 +1139,7 @@ void AliTriggerAnalysis::SaveHistograms() const
   fHistV0A->Write();
   fHistV0C->Write();
   fHistZDC->Write();
+  fHistTDCZDC->Write();
   fHistFMDA->Write();
   fHistFMDC->Write();
   fHistFMDSingle->Write();
index aaa9066..b26fac7 100644 (file)
@@ -52,7 +52,8 @@ class AliTriggerAnalysis : public TObject
     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);
@@ -109,7 +110,8 @@ class AliTriggerAnalysis : public TObject
     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)