typo fixed
[u/mrichter/AliRoot.git] / T0 / AliT0Trigger.cxx
index 1450f01..181eada 100644 (file)
  **************************************************************************/
 
 /* $Id$ */
+/***************************************************************
+ * T0 trigger class for T0 trigger signals:
+ *  - T0A
+ *  - T0C
+ *  - T0vertex
+ *  - T0 semi central event for ions
+ *  - T0 central            for ions
+ ****************************************************************/
+
 
-#include <Riostream.h>
 #include "AliLog.h"
 #include "AliRun.h"
+#include "AliLoader.h"
 #include "AliRunLoader.h"
 #include "AliTriggerInput.h"
+#include "AliT0Parameters.h"
+#include "AliT0TriggerParameters.h"
+#include <AliCDBManager.h>        
+#include <AliCDBEntry.h>          
+#include <AliCDBStorage.h>  
 
 #include "AliT0.h"
-#include "AliT0Loader.h"
 #include "AliT0digit.h"
 #include "AliT0Trigger.h"
 
+#include "Riostream.h"
+
 //----------------------------------------------------------------------
 ClassImp(AliT0Trigger)
 
 //----------------------------------------------------------------------
 AliT0Trigger::AliT0Trigger()
-  : AliTriggerDetector() 
+  : AliTriggerDetector(),
+    fT0(0x0),
+  fDigits(0x0),
+  fTrigPar(0x0) 
 {
    SetName("T0");
    CreateInputs();
+   AliCDBManager *stor =AliCDBManager::Instance();
+   //time equalizing
+   AliCDBEntry* fCalibentry  = stor->Get("T0/Calib/TriggerParam");
+   if (fCalibentry)
+     fTrigPar  = (AliT0TriggerParameters*)fCalibentry->GetObject();
+   else {
+         AliWarning(" No trigger parameters  in CDB , use default"); 
+   }
+
 }
 
 //----------------------------------------------------------------------
 void AliT0Trigger::CreateInputs()
 {
    // inputs 
-   
    // Do not create inputs again!!
    if( fInputs.GetEntriesFast() > 0 ) return;
    
-   fInputs.AddLast( new AliTriggerInput( "START_A_L0", "Signal on T0-A",  0x0100 ) );
-   fInputs.AddLast( new AliTriggerInput( "START_C_L0", "Signal on T0-C", 0x0200 ) );
-   fInputs.AddLast( new AliTriggerInput( "START_Vertex_L0", " Vertex T0-C&T0-A ", 0x0400 ) );
-   fInputs.AddLast( new AliTriggerInput( "START_Centr_L0", "Centrality central",  0x0800 ) );
-   fInputs.AddLast( new AliTriggerInput( "START_SemiCentral_L0", "Centrality semicentral",  0x1000 ) );
+   fInputs.AddLast( new AliTriggerInput( "0T0A", "T0",  0 ) );
+   fInputs.AddLast( new AliTriggerInput( "0T0C", "T0", 0 ) );
+   fInputs.AddLast( new AliTriggerInput( "0TVX", "T0", 0 ) );
+   fInputs.AddLast( new AliTriggerInput( "T0_Centr_L0", "T0",  0 ) );
+   fInputs.AddLast( new AliTriggerInput( "T0_SemiCentral_L0", "T0",  0 ) );
+
 }
 
 //----------------------------------------------------------------------
 void AliT0Trigger::Trigger()
 {
-   AliRunLoader* runLoader = gAlice->GetRunLoader();
+  // trigger input
+
+   AliRunLoader* runLoader = AliRunLoader::Instance();
    AliLoader * fT0Loader = runLoader->GetLoader("T0Loader");
    //   AliT0digit *fDigits; 
    fT0Loader->LoadDigits("READ");
@@ -66,7 +96,7 @@ void AliT0Trigger::Trigger()
     AliError("no digits tree");
     return;
   }
-  AliT0digit *fDigits = new AliT0digit();
+  fDigits = new AliT0digit();
 
   TBranch *brDigits = treeD->GetBranch("T0");
   if (brDigits) {
@@ -76,16 +106,24 @@ void AliT0Trigger::Trigger()
     return;
   } 
   brDigits->GetEntry(0);
-  Int_t   besttimeright = fDigits->BestTimeRight();
-  Int_t   besttimeleft = fDigits->BestTimeLeft();
+  Int_t   besttimeA = fDigits->BestTimeA();
+  Int_t   besttimeC = fDigits->BestTimeC();
   Int_t   timeDiff = fDigits->TimeDiff();
   Int_t    sumMult=   fDigits->SumMult();
 
-  if (besttimeright > 0 && besttimeright <99999  )  SetInput("START_A_L0");
-  if (besttimeleft>0  && besttimeleft<99999)   SetInput("START_C_L0"); 
-  if (timeDiff >5500 && timeDiff < 6500)       SetInput("START_Vertex_L0");
-  if (sumMult > 175)                           SetInput("START_Centr_L0");
-  if (sumMult>155 && sumMult <= 175)           SetInput("START_SemiCentral_L0");;
+  //trigger parameteres
+
+  Float_t timeWindowLow = fTrigPar->GetTimeWindowLow(); 
+  Float_t timeWindowHigh = fTrigPar->GetTimeWindowHigh(); 
+  Int_t ampCentr = fTrigPar->GetAmpCentr(); 
+  Int_t ampSemiCentr =  fTrigPar->GetAmpSemiCentr();
+
+  if (besttimeA > 0 && besttimeA <99999)  SetInput("0T0A");
+  if (besttimeC > 0  && besttimeC<99999)   SetInput("0T0C"); 
+  //6093 corrsponds to vertex -20cm, 6202 vertex +20 with delay 150nc eqalized on the TVDC unit 
+  if (timeDiff >timeWindowLow && timeDiff < timeWindowHigh) SetInput("0TVX");
+  if (sumMult > ampCentr)  SetInput("T0_Centr_L0");
+  if (sumMult> ampSemiCentr && sumMult <= ampCentr) SetInput("T0_SemiCentral_L0");;
 
    
 }