89 TSelector::TSelector() : TObject()
95 fOutput =
new TSelectorList;
102 TSelector::~TSelector()
116 void TSelector::Abort(
const char *why, EAbort what)
119 TString mess =
"Abort";
120 if (fAbort == kAbortProcess)
121 mess =
"AbortProcess";
122 else if (fAbort == kAbortFile)
125 Info(mess,
"%s", why);
142 TSelector *TSelector::GetSelector(
const char *filename)
146 Bool_t fromFile = kFALSE;
147 if (strchr(filename,
'.') != 0) {
150 localname += filename;
151 gROOT->ProcessLine(localname);
157 const char *basename = gSystem->BaseName(filename);
159 ::Error(
"TSelector::GetSelector",
"unable to determine the classname for file %s", filename);
162 TString aclicmode,args,io;
163 localname = gSystem->SplitAclicMode(basename,aclicmode,args,io);
164 if (localname.Last(
'.') != kNPOS)
165 localname.Remove(localname.Last(
'.'));
171 Bool_t autoloaderr = kFALSE;
172 if (!fromFile && gCling->AutoLoad(localname) != 1)
175 TClass *selCl = TClass::GetClass(localname);
178 auto offset = selCl->GetBaseClassOffset(TSelector::Class());
182 ::Error(
"TSelector::GetSelector",
183 "The class %s in file %s does not derive from TSelector.", localname.Data(), filename);
184 else if (autoloaderr)
185 ::Error(
"TSelector::GetSelector",
"class %s could not be loaded", filename);
187 ::Error(
"TSelector::GetSelector",
188 "class %s does not exist or does not derive from TSelector", filename);
191 char *result = (
char*)selCl->New();
194 return (TSelector*)(result+offset);
197 ClassInfo_t *cl = gCling->ClassInfo_Factory(localname);
199 Bool_t nameFound = kFALSE;
200 if (cl && gCling->ClassInfo_IsValid(cl)) {
201 if (localname == gCling->ClassInfo_FullName(cl)) {
203 if (gCling->ClassInfo_IsBase(cl,
"TSelector")) ok = kTRUE;
209 ::Error(
"TSelector::GetSelector",
210 "The class %s in file %s does not derive from TSelector.", localname.Data(), filename);
212 ::Error(
"TSelector::GetSelector",
213 "The file %s does not define a class named %s.", filename, localname.Data());
217 ::Error(
"TSelector::GetSelector",
"class %s could not be loaded", filename);
219 ::Error(
"TSelector::GetSelector",
220 "class %s does not exist or does not derive from TSelector", filename);
222 gCling->ClassInfo_Delete(cl);
227 TSelector *selector = (TSelector*)gCling->ClassInfo_New(cl);
228 gCling->ClassInfo_Delete(cl);
237 Bool_t TSelector::IsStandardDraw(
const char *selec)
241 ::Info(
"TSelector::IsStandardDraw",
242 "selector name undefined - do nothing");
246 Bool_t stdselec = kFALSE;
247 if (!strchr(selec,
'.')) {
248 if (strstr(selec,
"TSelectorDraw")) {
251 TClass *cl = TClass::GetClass(selec);
252 if (cl && (cl->InheritsFrom(
"TProofDraw") ||
253 cl->InheritsFrom(
"TSelectorDraw")))
270 void TSelector::ImportOutput(TList *output) {
273 if (!output || output->GetSize() <= 0) {
281 TIter nxexo(fOutput);
282 while ((o = nxexo())) {
283 if (output->FindObject(o)) output->Remove(o);
288 while ((o = nxo())) {
293 output->SetOwner(kFALSE);
294 output->Clear(
"nodelete");
300 Bool_t TSelector::ProcessCut(Long64_t )
317 void TSelector::ProcessFill(Long64_t )
330 Bool_t TSelector::Process(Long64_t ) {