added new PhosClusterEnergy trigger component (Svein)
[u/mrichter/AliRoot.git] / HLT / trigger / test / testPhosClusterEnergyTrigger.C
1 #if !defined(__CINT__) || defined(__MAKECINT__)
2 #include "Riostream.h"
3 #include "TFile.h"
4 #include "TSystem.h"
5 #include "TRandom3.h"
6 #include "TMath.h"
7 #include "TParticle.h"
8 #include "AliESDEvent.h"
9 #include "AliESDtrack.h"
10 #include "AliHLTSystem.h"
11 #include "AliHLTConfiguration.h"
12 #include "AliHLTTriggerDecision.h"
13
14 #include "AliESDCaloCluster.h"
15 #endif
16
17 void CreateInput(const char* filename, Int_t numOfTracks, Double_t minPt, Double_t maxPt)
18 {
19   gRandom->SetSeed(123);
20   TFile* file = new TFile(filename, "RECREATE");
21   AliESDEvent event;
22   event.CreateStdContent();
23
24   AliESDCaloCluster cluster;
25   cluster = new AliESDCaloCluster();
26   
27   Double_t et = gRandom->Rndm() * (maxPt - minPt) + minPt;
28   
29   cluster.SetE(et);
30   cluster.SetClusterType(AliESDCaloCluster::kPHOSCluster);
31   //cluster.SetClusterType(nuOfmTracks);
32
33   event.AddCaloCluster(&cluster);
34   event.SetFirstPHOSCluster(0);
35
36   event.Write();
37   delete file;
38 }
39
40 bool CheckIfOutputIsOk()
41 {
42   const char* filename = "PhosClusterEnergyTriggerTestOutput.root";
43   TFile file(filename, "READ");
44   AliHLTTriggerDecision* decision1 = dynamic_cast<AliHLTTriggerDecision*>(file.Get("PhosClusterEnergyTrigger;1"));
45   AliHLTTriggerDecision* decision2 = dynamic_cast<AliHLTTriggerDecision*>(file.Get("PhosClusterEnergyTrigger;2"));
46   if (decision1 == NULL)
47   {
48     cerr << "ERROR: 'PhosClusterEnergyTrigger;1' AliHLTTriggerDecision object not found in file " << filename << endl;
49     return false;
50   }
51   if (decision2 == NULL)
52   {
53     cerr << "ERROR: 'PhosClusterEnergyTrigger;2' AliHLTTriggerDecision object not found in file " << filename << endl;
54     return false;
55   }
56   cout << "============================== Decision 1 ==============================" << endl;
57   decision1->Print();
58   if (decision1->Result() != 0)
59   {
60     cout << "FAILED result check. Expected a result of 0 for trigger decision 1 but received: " << decision1->Result() << endl;
61     return false;
62   }
63   cout << "============================== Decision 2 ==============================" << endl;
64   decision2->Print();
65   if (decision2->Result() != 1)
66   {
67     cout << "FAILED result check. Expected a result of 1 for trigger decision 2 but received: " << decision2->Result() << endl;
68     return false;
69   }
70
71   return true;
72 }
73
74 bool testPhosClusterEnergyTrigger()
75 {
76   AliCDBManager * man = AliCDBManager::Instance();
77   man->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
78   man->SetRun(0);
79   gSystem->Load("libAliHLTTrigger.so");
80   CreateInput("PhosClusterEnergyTriggerTestInput1.root", -2, 0.1, 1.99);
81   CreateInput("PhosClusterEnergyTriggerTestInput2.root", 0, 2.1, 4.0);
82   AliHLTSystem sys;
83   sys.LoadComponentLibraries("libAliHLTUtil.so");
84   sys.LoadComponentLibraries("libAliHLTTrigger.so");
85   const char* cmdline = " -datatype ROOTTOBJ 'HLT ' -datafile PhosClusterEnergyTriggerTestInput1.root -nextevent -datafile PhosClusterEnergyTriggerTestInput2.root";
86   AliHLTConfiguration pub("pub", "ROOTFilePublisher", NULL, cmdline);
87   AliHLTConfiguration proc("proc", "PhosClusterEnergyTrigger", "pub", "-energy 2");
88   AliHLTConfiguration sink("sink", "ROOTFileWriter", "proc", "-datafile PhosClusterEnergyTriggerTestOutput.root -concatenate-events");
89   sys.BuildTaskList("sink");
90   sys.Run(2);
91   return CheckIfOutputIsOk();
92 }
93 #ifndef __MAKECINT__
94 int main(int /*argc*/, const char** /*argv*/)
95 {
96   bool resultOk = testPhosClusterEnergyTrigger();
97   if (not resultOk) return 1;
98   return 0;
99 }
100 #endif // __MAKECINT__