]>
Commit | Line | Data |
---|---|---|
a653f08b | 1 | /************************************************************************** |
2 | * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
3 | * * | |
4 | * Author: The ALICE Off-line Project. * | |
5 | * Contributors are mentioned in the code where appropriate. * | |
6 | * * | |
7 | * Permission to use, copy, modify and distribute this software and its * | |
8 | * documentation strictly for non-commercial purposes is hereby granted * | |
9 | * without fee, provided that the above copyright notice appears in all * | |
10 | * copies and that both the copyright notice and this permission notice * | |
11 | * appear in the supporting documentation. The authors make no claims * | |
12 | * about the suitability of this software for any purpose. It is * | |
13 | * provided "as is" without express or implied warranty. * | |
14 | **************************************************************************/ | |
15 | ||
07d83718 | 16 | /* $Id$ */ |
17 | ||
e54bf126 | 18 | /// \ingroup macros |
19 | /// \file MUONTrigger.C | |
20 | /// \brief This macro is to be used to check the trigger algorithm w/o having to | |
21 | /// (re-)perform simulation and digitalization. | |
22 | /// | |
23 | /// See full description on the \ref README_trigger page. | |
24 | /// | |
25 | /// \author P.Crochet (LPC) | |
a653f08b | 26 | |
27 | #if !defined(__CINT__) || defined(__MAKECINT__) | |
28 | #include "AliRun.h" | |
29 | #include "AliMUON.h" | |
a653f08b | 30 | #include "AliMUONDigit.h" |
d6ea26eb | 31 | #include "AliMUONTriggerElectronics.h" |
32 | #include "AliMUONCalibrationData.h" | |
33 | #include "AliCDBManager.h" | |
53958b19 | 34 | #include "AliMUONDataInterface.h" |
35 | #include "AliMUONMCDataInterface.h" | |
36 | #include "AliMUONVTriggerStore.h" | |
37 | #include "AliMUONDigitStoreV1.h" | |
07d83718 | 38 | #include <TClonesArray.h> |
53958b19 | 39 | #include "AliMpCDB.h" |
40 | #include <TFile.h> | |
a653f08b | 41 | #endif |
53958b19 | 42 | |
43 | void MUONTrigger(const char* filename) | |
a653f08b | 44 | { |
07d83718 | 45 | // Creating Run Loader and openning file containing Digits |
53958b19 | 46 | AliRunLoader * RunLoader = AliRunLoader::Open(filename,"MUONLoader","UPDATE"); |
a653f08b | 47 | if (RunLoader ==0x0) { |
53958b19 | 48 | printf(">>> Error : Error Opening %s file \n",filename); |
29348618 | 49 | return; |
a653f08b | 50 | } |
51 | // Loading AliRun master | |
52 | if (RunLoader->GetAliRun() == 0x0) RunLoader->LoadgAlice(); | |
53 | gAlice = RunLoader->GetAliRun(); | |
54 | ||
55 | // Loading MUON subsystem | |
53958b19 | 56 | AliLoader* MUONLoader = RunLoader->GetDetectorLoader("MUON"); |
a653f08b | 57 | MUONLoader->LoadDigits("READ"); |
53958b19 | 58 | MUONLoader->LoadRecPoints("UPDATE"); // absolutely essential !!! |
07d83718 | 59 | |
a653f08b | 60 | // Creating MUONTriggerDecision |
07d83718 | 61 | AliCDBManager* cdbManager = AliCDBManager::Instance(); |
62 | cdbManager->SetDefaultStorage("local://$ALICE_ROOT"); | |
07d83718 | 63 | |
53958b19 | 64 | Int_t runnumber = cdbManager->GetRun(); |
65 | AliMpCDB::LoadDDLStore(); | |
07d83718 | 66 | |
53958b19 | 67 | AliMUONCalibrationData *CalibrationData = new AliMUONCalibrationData(runnumber); |
68 | AliMUONTriggerElectronics *TriggerProcessor = new AliMUONTriggerElectronics(CalibrationData); | |
69 | ||
70 | Int_t nevents = RunLoader->GetNumberOfEvents(); | |
71 | AliMUONVDigitStore* digitStore=0x0; | |
72 | AliMUONVTriggerStore* triggerStore=0x0; | |
a653f08b | 73 | |
74 | for(Int_t ievent = 0; ievent < nevents; ievent++) { | |
d6ea26eb | 75 | printf(">>> Event %i out of %i \n",ievent,nevents); |
53958b19 | 76 | RunLoader->GetRunLoader()->GetEvent(ievent); |
d6ea26eb | 77 | |
53958b19 | 78 | MUONLoader->LoadRecPoints("update"); |
79 | MUONLoader->CleanRecPoints(); | |
80 | MUONLoader->MakeRecPointsContainer(); | |
81 | TTree* clustersTree = MUONLoader->TreeR(); | |
82 | TFile* cfile = clustersTree->GetCurrentFile(); | |
83 | if ( !cfile ) | |
84 | { | |
85 | cout << " could not find Cluster file " << endl; | |
86 | return; | |
87 | } | |
07d83718 | 88 | |
53958b19 | 89 | MUONLoader->LoadDigits("read"); |
90 | TTree* digitsTree = MUONLoader->TreeD(); | |
91 | TFile* dfile = digitsTree->GetCurrentFile(); | |
92 | if ( !dfile ) | |
93 | { | |
94 | cout << " could not find Digit file " << endl; | |
95 | return; | |
96 | } | |
07d83718 | 97 | |
53958b19 | 98 | // here start reconstruction |
99 | if (!digitStore) digitStore = AliMUONVDigitStore::Create(*digitsTree); | |
100 | if (!triggerStore) triggerStore = AliMUONVTriggerStore::Create(*digitsTree); | |
101 | // insure we start with empty stores | |
102 | if ( digitStore ) | |
103 | { | |
104 | digitStore->Clear(); | |
105 | Bool_t alone = ( triggerStore ? kFALSE : kTRUE ); | |
106 | Bool_t ok = digitStore->Connect(*digitsTree,alone); | |
107 | if (!ok) | |
108 | { | |
109 | cerr << "Could not connect digitStore to digitsTree \n"; | |
110 | return; | |
d6ea26eb | 111 | } |
53958b19 | 112 | } else { |
113 | cerr << "digitStore does not exist " << "\n"; | |
114 | return; | |
115 | } | |
116 | ||
117 | digitsTree->GetEvent(0); | |
d6ea26eb | 118 | |
53958b19 | 119 | // process trigger response |
120 | TriggerProcessor->Digits2Trigger(*digitStore,*triggerStore); | |
121 | ||
122 | //triggerStore->Print(); | |
123 | ||
124 | Bool_t ok(kFALSE); | |
125 | if ( triggerStore ) { | |
126 | ok = triggerStore->Connect(*clustersTree,kTRUE); | |
127 | if (!ok) | |
128 | { | |
129 | cerr << "Could not create triggerStore branches in TreeR " << "\n"; | |
130 | return; | |
131 | } | |
132 | } else { | |
133 | cerr << "triggerStore does not exist " << "\n"; | |
134 | return; | |
135 | } | |
136 | ||
137 | // fill TreeR | |
138 | clustersTree->Fill(); | |
139 | MUONLoader->UnloadDigits(); | |
140 | MUONLoader->WriteRecPoints("OVERWRITE"); | |
141 | MUONLoader->UnloadRecPoints(); | |
d6ea26eb | 142 | |
53958b19 | 143 | } // loop on events |
d6ea26eb | 144 | |
a653f08b | 145 | } |
d6ea26eb | 146 | |
53958b19 | 147 | |
148 |