ROOT logo
//
// Class AliRsnInputHandler
//
// AliRsnInputHandler
// TODO example
// author:
//        Martin Vala (martin.vala@cern.ch)
//

#include <Riostream.h>
#include "AliLog.h"

#include "AliRsnEvent.h"
#include "AliMultiInputEventHandler.h"
#include "AliMixInputEventHandler.h"
#include "AliMCEventHandler.h"

#include "AliRsnCutSet.h"
#include "AliRsnInputHandler.h"
ClassImp(AliRsnInputHandler)

//_____________________________________________________________________________
AliRsnInputHandler::AliRsnInputHandler(const char *name) :
   AliInputEventHandler(name, name),
   fRsnEvent(0),
   fRsnSelector(),
   fRsnEventCuts(0)
{
//
// Default constructor.
//
   AliDebug(AliLog::kDebug + 10, "<-");
   AliDebug(AliLog::kDebug + 10, "->");
}

//_____________________________________________________________________________
AliRsnInputHandler::AliRsnInputHandler(const AliRsnInputHandler &copy) :
   AliInputEventHandler(),
   fRsnEvent(0),
   fRsnSelector(),
   fRsnEventCuts(copy.fRsnEventCuts)
{
//
// Default constructor.
//
   AliDebug(AliLog::kDebug + 10, "<-");
   AliDebug(AliLog::kDebug + 10, "->");
}

//_____________________________________________________________________________
AliRsnInputHandler &AliRsnInputHandler::operator=(const AliRsnInputHandler &copy)
{
//
// Default constructor.
//
   if (this == &copy)
      return *this;
   fRsnEventCuts = copy.fRsnEventCuts;
   return *this;
}


//_____________________________________________________________________________
AliRsnInputHandler::~AliRsnInputHandler()
{
//
// Destructor
//
   AliDebug(AliLog::kDebug + 10, "<-");
   delete fRsnEvent;
   AliDebug(AliLog::kDebug + 10, "->");
}

//_____________________________________________________________________________
Bool_t AliRsnInputHandler::Init(Option_t *opt)
{
//
// Init() is called for all mix input handlers.
//
   AliDebug(AliLog::kDebug + 5, Form("<- opt=%s", opt));

   AliDebug(AliLog::kDebug + 5, Form("->"));
   return kTRUE;
}
//_____________________________________________________________________________
Bool_t AliRsnInputHandler::Init(TTree *tree, Option_t *opt)
{
//
// Init(const char*path) is called for all mix input handlers.
// Create event pool if needed
//
   AliDebug(AliLog::kDebug + 5, Form("<- %p %s opt=%s", (void *) tree, tree->GetName(), opt));
   AliDebug(AliLog::kDebug + 5, Form("->"));
   return kTRUE;
}
//_____________________________________________________________________________
Bool_t AliRsnInputHandler::Notify()
{
//
// Notify() is called for all mix input handlers
//
   AliDebug(AliLog::kDebug + 5, Form("<-"));
   AliDebug(AliLog::kDebug + 5, Form("->"));
   return kTRUE;
}

//_____________________________________________________________________________
Bool_t AliRsnInputHandler::Notify(const char *path)
{
//
// Notify(const char*path) is called for all mix input handlers
//
   AliDebug(AliLog::kDebug + 5, Form("<- %s", path));
   AliDebug(AliLog::kDebug + 5, "->");
   return kTRUE;
}
//_____________________________________________________________________________
Bool_t AliRsnInputHandler::BeginEvent(Long64_t entry)
{
//
// BeginEvent(Long64_t entry) is called for all mix input handlers
//
   AliDebug(AliLog::kDebug + 5, Form("<- %lld", entry));

   if (fParentHandler) {
      TString tmp = "";
      AliInputEventHandler *ih = 0;
      AliMultiInputEventHandler *multiIH = dynamic_cast<AliMultiInputEventHandler *>(fParentHandler);
      if (multiIH) {
         ih = multiIH->GetFirstInputEventHandler();
         if (ih) {
            if (!fRsnEvent) fRsnEvent = new AliRsnEvent();
            fRsnEvent->SetRef(ih->GetEvent());
            fRsnEvent->SetPIDResponse(ih->GetPIDResponse());
            if (fRsnEvent->GetRefESD()) {
               AliMCEventHandler *mcH =  multiIH->GetFirstMCEventHandler();
               if (mcH) fRsnEvent->SetRefMC(mcH->MCEvent());
            } else if (fRsnEvent->GetRefAOD()) {
               AliAODEvent *aod = fRsnEvent->GetRefAOD();
               TClonesArray *listAOD = (TClonesArray *)(aod->GetList()->FindObject(AliAODMCParticle::StdBranchName()));
               if (listAOD) fRsnEvent->SetRefMC(fRsnEvent->GetRefAOD());
            }
            if (fParentHandler->ParentHandler()) tmp = "MIX";
            // applying pid cuts
            //fRsnPIDManager.Reset();

            //fRsnPIDManager.ApplyCuts(fRsnEvent);
            fRsnSelector.Reset();

            // reject event if needed
            if (fRsnEventCuts) if (!fRsnEventCuts->IsSelected(fRsnEvent)) return kTRUE;
            fRsnSelector.ScanEvent(fRsnEvent);
            fRsnSelector.ExecActions(fRsnEvent);
         }
      }
   }
   AliDebug(AliLog::kDebug + 5, "->");
   return kTRUE;
}

Bool_t AliRsnInputHandler::GetEntry()
{
   AliDebug(AliLog::kDebug + 5, "<-");
   AliDebug(AliLog::kDebug + 5, "->");
   return kTRUE;
}

//_____________________________________________________________________________
Bool_t AliRsnInputHandler::FinishEvent()
{
   //
   // FinishEvent() is called for all mix input handlers
   //
   AliDebug(AliLog::kDebug + 5, Form("<-"));
   AliDebug(AliLog::kDebug + 5, Form("->"));
   return kTRUE;
}
 AliRsnInputHandler.cxx:1
 AliRsnInputHandler.cxx:2
 AliRsnInputHandler.cxx:3
 AliRsnInputHandler.cxx:4
 AliRsnInputHandler.cxx:5
 AliRsnInputHandler.cxx:6
 AliRsnInputHandler.cxx:7
 AliRsnInputHandler.cxx:8
 AliRsnInputHandler.cxx:9
 AliRsnInputHandler.cxx:10
 AliRsnInputHandler.cxx:11
 AliRsnInputHandler.cxx:12
 AliRsnInputHandler.cxx:13
 AliRsnInputHandler.cxx:14
 AliRsnInputHandler.cxx:15
 AliRsnInputHandler.cxx:16
 AliRsnInputHandler.cxx:17
 AliRsnInputHandler.cxx:18
 AliRsnInputHandler.cxx:19
 AliRsnInputHandler.cxx:20
 AliRsnInputHandler.cxx:21
 AliRsnInputHandler.cxx:22
 AliRsnInputHandler.cxx:23
 AliRsnInputHandler.cxx:24
 AliRsnInputHandler.cxx:25
 AliRsnInputHandler.cxx:26
 AliRsnInputHandler.cxx:27
 AliRsnInputHandler.cxx:28
 AliRsnInputHandler.cxx:29
 AliRsnInputHandler.cxx:30
 AliRsnInputHandler.cxx:31
 AliRsnInputHandler.cxx:32
 AliRsnInputHandler.cxx:33
 AliRsnInputHandler.cxx:34
 AliRsnInputHandler.cxx:35
 AliRsnInputHandler.cxx:36
 AliRsnInputHandler.cxx:37
 AliRsnInputHandler.cxx:38
 AliRsnInputHandler.cxx:39
 AliRsnInputHandler.cxx:40
 AliRsnInputHandler.cxx:41
 AliRsnInputHandler.cxx:42
 AliRsnInputHandler.cxx:43
 AliRsnInputHandler.cxx:44
 AliRsnInputHandler.cxx:45
 AliRsnInputHandler.cxx:46
 AliRsnInputHandler.cxx:47
 AliRsnInputHandler.cxx:48
 AliRsnInputHandler.cxx:49
 AliRsnInputHandler.cxx:50
 AliRsnInputHandler.cxx:51
 AliRsnInputHandler.cxx:52
 AliRsnInputHandler.cxx:53
 AliRsnInputHandler.cxx:54
 AliRsnInputHandler.cxx:55
 AliRsnInputHandler.cxx:56
 AliRsnInputHandler.cxx:57
 AliRsnInputHandler.cxx:58
 AliRsnInputHandler.cxx:59
 AliRsnInputHandler.cxx:60
 AliRsnInputHandler.cxx:61
 AliRsnInputHandler.cxx:62
 AliRsnInputHandler.cxx:63
 AliRsnInputHandler.cxx:64
 AliRsnInputHandler.cxx:65
 AliRsnInputHandler.cxx:66
 AliRsnInputHandler.cxx:67
 AliRsnInputHandler.cxx:68
 AliRsnInputHandler.cxx:69
 AliRsnInputHandler.cxx:70
 AliRsnInputHandler.cxx:71
 AliRsnInputHandler.cxx:72
 AliRsnInputHandler.cxx:73
 AliRsnInputHandler.cxx:74
 AliRsnInputHandler.cxx:75
 AliRsnInputHandler.cxx:76
 AliRsnInputHandler.cxx:77
 AliRsnInputHandler.cxx:78
 AliRsnInputHandler.cxx:79
 AliRsnInputHandler.cxx:80
 AliRsnInputHandler.cxx:81
 AliRsnInputHandler.cxx:82
 AliRsnInputHandler.cxx:83
 AliRsnInputHandler.cxx:84
 AliRsnInputHandler.cxx:85
 AliRsnInputHandler.cxx:86
 AliRsnInputHandler.cxx:87
 AliRsnInputHandler.cxx:88
 AliRsnInputHandler.cxx:89
 AliRsnInputHandler.cxx:90
 AliRsnInputHandler.cxx:91
 AliRsnInputHandler.cxx:92
 AliRsnInputHandler.cxx:93
 AliRsnInputHandler.cxx:94
 AliRsnInputHandler.cxx:95
 AliRsnInputHandler.cxx:96
 AliRsnInputHandler.cxx:97
 AliRsnInputHandler.cxx:98
 AliRsnInputHandler.cxx:99
 AliRsnInputHandler.cxx:100
 AliRsnInputHandler.cxx:101
 AliRsnInputHandler.cxx:102
 AliRsnInputHandler.cxx:103
 AliRsnInputHandler.cxx:104
 AliRsnInputHandler.cxx:105
 AliRsnInputHandler.cxx:106
 AliRsnInputHandler.cxx:107
 AliRsnInputHandler.cxx:108
 AliRsnInputHandler.cxx:109
 AliRsnInputHandler.cxx:110
 AliRsnInputHandler.cxx:111
 AliRsnInputHandler.cxx:112
 AliRsnInputHandler.cxx:113
 AliRsnInputHandler.cxx:114
 AliRsnInputHandler.cxx:115
 AliRsnInputHandler.cxx:116
 AliRsnInputHandler.cxx:117
 AliRsnInputHandler.cxx:118
 AliRsnInputHandler.cxx:119
 AliRsnInputHandler.cxx:120
 AliRsnInputHandler.cxx:121
 AliRsnInputHandler.cxx:122
 AliRsnInputHandler.cxx:123
 AliRsnInputHandler.cxx:124
 AliRsnInputHandler.cxx:125
 AliRsnInputHandler.cxx:126
 AliRsnInputHandler.cxx:127
 AliRsnInputHandler.cxx:128
 AliRsnInputHandler.cxx:129
 AliRsnInputHandler.cxx:130
 AliRsnInputHandler.cxx:131
 AliRsnInputHandler.cxx:132
 AliRsnInputHandler.cxx:133
 AliRsnInputHandler.cxx:134
 AliRsnInputHandler.cxx:135
 AliRsnInputHandler.cxx:136
 AliRsnInputHandler.cxx:137
 AliRsnInputHandler.cxx:138
 AliRsnInputHandler.cxx:139
 AliRsnInputHandler.cxx:140
 AliRsnInputHandler.cxx:141
 AliRsnInputHandler.cxx:142
 AliRsnInputHandler.cxx:143
 AliRsnInputHandler.cxx:144
 AliRsnInputHandler.cxx:145
 AliRsnInputHandler.cxx:146
 AliRsnInputHandler.cxx:147
 AliRsnInputHandler.cxx:148
 AliRsnInputHandler.cxx:149
 AliRsnInputHandler.cxx:150
 AliRsnInputHandler.cxx:151
 AliRsnInputHandler.cxx:152
 AliRsnInputHandler.cxx:153
 AliRsnInputHandler.cxx:154
 AliRsnInputHandler.cxx:155
 AliRsnInputHandler.cxx:156
 AliRsnInputHandler.cxx:157
 AliRsnInputHandler.cxx:158
 AliRsnInputHandler.cxx:159
 AliRsnInputHandler.cxx:160
 AliRsnInputHandler.cxx:161
 AliRsnInputHandler.cxx:162
 AliRsnInputHandler.cxx:163
 AliRsnInputHandler.cxx:164
 AliRsnInputHandler.cxx:165
 AliRsnInputHandler.cxx:166
 AliRsnInputHandler.cxx:167
 AliRsnInputHandler.cxx:168
 AliRsnInputHandler.cxx:169
 AliRsnInputHandler.cxx:170
 AliRsnInputHandler.cxx:171
 AliRsnInputHandler.cxx:172
 AliRsnInputHandler.cxx:173
 AliRsnInputHandler.cxx:174
 AliRsnInputHandler.cxx:175
 AliRsnInputHandler.cxx:176
 AliRsnInputHandler.cxx:177